我在Apache服务器上运行了一个Jekyll生成的站点,我在设置正确的.htaccess文件时遇到了一些麻烦。 Jekyll将index.html文件放入代表每个页面的文件夹中,因此我的网址目前看起来像domain.com/foo/
我想从网址中删除该尾随斜杠,以便它与我之前设置的完全匹配(并且因为我觉得它看起来更好)。
目前处理重写的.htaccess文件部分如下所示:
<IfModule mod_rewrite.c>
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
</IfModule>
Options -Indexes
DirectoryIndex index.xml index.html
我尝试过遵循建议here,但这会让我进入重定向循环。
有人可以帮帮我吗?简而言之,我想要的是domain.com/foo URL,以显示/ foo目录中的index.html文件,以及domain.com/foo/和domain.com/foo/index.html重定向到域。 COM / foo中。
答案 0 :(得分:3)
您应该可以使用它来关闭斜杠的添加。
DirectorySlash Off
请注意,添加尾部斜杠是有充分理由的。在目录名中使用尾部斜杠会使相对URL指向同一个东西,无论URL是否以“foo / bar结尾” /index.html“或只是”foo / bar /“。如果没有尾部斜杠,相对URL会引用与正常情况相同的某个级别。 (例如:“baz.jpg”会给用户“/foo/baz.jpg”而不是“/foo/bar/baz.jpg”,因为如果它不受保护,则会删除尾随的“bar”尾部斜杠。)因此,如果您这样做,您可能希望避免使用相对URL。
然后重写目录名以返回index.html,你可能会这样做:
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI}/index.html -f
RewriteRule ^(.*)$ /$1/index.html [L]
检查REQUEST_URI / index.html是否存在,以及它是否执行内部重定向。