htaccess rewriterule忽略index.html

时间:2011-12-09 12:17:37

标签: .htaccess codeigniter mod-rewrite codeigniter-2

我正在使用CodeIgniter和.htaccess来重写网址,但我希望它忽略index.html

我们可以随时上传{​​{1}},因为这将是一个临时着陆页。通过index.html上的主站点链接。

这是index.php中的当前内容,我已将服务器的目录索引设置为.htaccess

index.html index.php

感谢您的帮助

3 个答案:

答案 0 :(得分:5)

看起来你想要重写你目录中并不存在的所有内容。

试试这个而不是你当前的RewriteCond:

RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1

答案 1 :(得分:2)

您可以使用FilesMatch指令直接限制对它的访问,而不是使用RewriteCond来忽略index.html文件。 FilesMatch接受一个正则表达式,它可以根据文件名(例如index.html)或任何正则表达式进行过滤。

阻止访问index.html文件

<FilesMatch "index\.html$">
    Order allow,deny
</FilesMatch>

这将完全拒绝访问index.html文件。我承认,我不知道这会对搜索引擎抓取产生负面影响。

要了解有关FilesMatch指令的更多信息,请参阅http://httpd.apache.org/docs/current/mod/core.html#filesmatch


至于您当前拥有的该列表中的其他目录,您可以锁定所有目录访问,而不管名称如何。它会给你更多的报道。

Options -Indexes

要详细了解选项指令,请参阅http://httpd.apache.org/docs/current/mod/core.html#options


最后,您的新.htaccess文件将如下所示:

# Protect specific files from access
<FilesMatch "index\.html$">
    Order allow,deny
</FilesMatch>

# Hide directory listing for URL's mapping to a directory
Options -Indexes

# Follow all symbolic links in this directory 
Options +FollowSymLinks

# General rewrite rules
<IfModule mod_rewrite.c>
  RewriteEngine on

  RewriteBase /

  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ index.php/$1 [L,QSA]
</IfModule>

答案 2 :(得分:0)

为什么不使用内置的environment函数?

您可以创建“维护”环境并将基本控制器设置为您想要的任何内容。然后你只需要编辑index.php文件来指定你想要的环境。