-1

他们是我可以将 .htaccess 文件配置为只读特定文件的一种方式吗?只说 index.php 而不是其他的?

编辑:我知道 index.php 是将被读取的默认文件。我想要这样的东西:

如果用户输入 www.example.com 它默认读取 index.php。如果如果输入 www.example.com/index2.php 它应该读取 index2.php。

我想要的不是在任何地方显示 404 错误页面,无论 url 是什么。我只有两个文件应该被读取。

4

2 回答 2

3

Zend Framework 提供了一个默认的 .htaccess,它将所有请求路由到 index.php,除非请求的文件确实存在:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

您可以使其更具限制性并将所有内容路由到 index.php:

RewriteEngine On
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

请记住,这将使对 CSS 文件的额外请求变得不可能。

[编辑]

看看 Drupal 提供的 .htaccess 也很不错。在那里,某些路径和文件类型也被阻止。Drupal 的 .htaccess 中的第一个指令是:

<FilesMatch "\.(engine|inc|info|install|make|module|profile|test|po|sh|.*sql|theme|tpl(\.php)?|xtmpl)$|^(\..*|Entries.*|Repository|Root|Tag|Template)$">
    Order allow,deny
</FilesMatch>

因此,如果您只想阻止对 php 文件和application目录中所有内容的访问,您可能会这样做:

<FilesMatch "(\.php$|^application)">
    Order allow,deny
</FilesMatch>

(未测试,因为我不是 htaccess 专家,代码只是我的头脑;如果需要更正,请有人在评论中发表评论或直接编辑我的代码)。

于 2012-06-19T10:01:42.960 回答
0

您并没有真正提供有关您真正想要做的事情的太多信息,如果您尝试仅对某些文件要求身份验证,那么您可以使用如下内容:

<Files "index.php">
require valid-user
</Files>

不幸的是,如果没有更多信息,我真的无法提出任何其他建议。

于 2012-06-19T09:56:58.767 回答