.htaccess noob rewrite index.html

时间:2016-03-07 23:03:20

标签: .htaccess

这是我的.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。

1 个答案:

答案 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