这是我的.htaccess文件
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
我需要这个www.domainname.com/folder-name/
重写/重定向到此
www.domainname.com/folder-name/index.html
没有搞砸了htaccess中的内容。
所以我很清楚...当它完全说完了,我想要www.domainname.com/folder-name/来显示在URL栏中,但我希望索引中的内容。要呈现的HTML。
答案 0 :(得分:2)
您遇到问题,如果您转到www.domainname.com/folder-name/
,您的第一个重写规则会将您重定向到www.domainname.com/folder-name
,删除尾随斜杠。假设您没有关闭DirectorySlash
,mod_dir会将此重定向到www.domainname.com/folder-name/
,然后触发重写规则,触发mod_dir等。如果你&# 39;已经关闭 DirectorySlash
,这意味着您已经暴露了信息泄露错误(或#34;功能&#34;),它将列出{{{ 1}}文件夹,即使存在folder-name
。
因此,如果您真的希望能够转到index.html
并且不会丢失尾部斜杠,那么您需要在第一个规则中添加一个条件,然后只需允许mod_dir执行它的操作:
www.domainname.com/folder-name/
如果您输入错误,并且您实际上希望删除所有结尾斜杠(包括文件夹,泄漏文件夹内容等),那么您必须做其他一些事情。基本上,你必须做mod_dir normall为你做的事情,并确保关闭DirectoryIndex index.html
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
(仍然很危险,因为它可能会暴露你所有文件夹的文件列表):
DirectorySlash