我正在使用CodeIgniter和.htaccess
来重写网址,但我希望它忽略index.html
。
我们可以随时上传{{1}},因为这将是一个临时着陆页。通过index.html
上的主站点链接。
这是index.php
中的当前内容,我已将服务器的目录索引设置为.htaccess
index.html index.php
感谢您的帮助
答案 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文件来指定你想要的环境。