Apache .htaccess以显示不带尾随斜杠的目录index.html
我在Apache服务器上运行了一个由Jekyll生成的站点,在正确设置.htaccess文件时遇到了一些问题。Jekyll将index.html文件放入表示每个页面的文件夹中,因此我的URL当前看起来像Apache .htaccess以显示不带尾随斜杠的目录index.html,apache,.htaccess,Apache,.htaccess,我在Apache服务器上运行了一个由Jekyll生成的站点,在正确设置.htaccess文件时遇到了一些问题。Jekyll将index.html文件放入表示每个页面的文件夹中,因此我的URL当前看起来像domain.com/foo/ 我想从URL中删除尾随的斜杠,以便它与我之前设置的内容完全匹配(而且因为我认为它看起来更好) 当前,my.htaccess文件中处理重新布线的部分如下所示: <IfModule mod_rewrite.c> RewriteCond %{HTTPS}
domain.com/foo/
我想从URL中删除尾随的斜杠,以便它与我之前设置的内容完全匹配(而且因为我认为它看起来更好)
当前,my.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
重写cond%{HTTPS}=在…上
重写cond%{HTTP_HOST}^www\.(.+)$[NC]
重写规则^(.*)$http://%1/$1[R=301,L]
选项-索引
DirectoryIndex.xml index.html
我试着按照建议去做,但这让我陷入了一个重定向循环
有人能帮我吗?简言之,我想让domain.com/foo URL显示/foo目录中的index.html文件,让domain.com/foo/和domain.com/foo/index.html重定向到domain.com/foo。您应该能够使用它来关闭斜杠的添加
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是否存在,以及它是否执行内部重定向。您应该能够使用它来关闭斜杠的添加
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是否存在,以及它是否执行内部重定向。感谢您的响应,我认为这可能是答案的一半。这会阻止domain.com/foo重写为domain.com/foo/,但不会显示/foo/中的index.html文件directory@mrappleton您可能需要添加一个单独的重写。我在答案中添加了一些可能有用的东西。这就差不多了。我只需要添加
RewriteRule^(+)/$http://floatleft.com/1美元[R=301,L]
我得到了我想要的东西。非常感谢你的帮助!哦,这又吐出了一件事。我在/feed/文件夹中有一个index.xml。有没有一种方法可以指向/输入这个?哦,不用担心-明白了!再次感谢!谢谢你的回答,我想这可能是答案的一半。这会阻止domain.com/foo重写为domain.com/foo/,但不会显示/foo/中的index.html文件directory@mrappleton您可能需要添加一个单独的重写。我在答案中添加了一些可能有用的东西。这就差不多了。我只需要添加RewriteRule^(+)/$http://floatleft.com/1美元[R=301,L]
我得到了我想要的东西。非常感谢你的帮助!哦,这又吐出了一件事。我在/feed/文件夹中有一个index.xml。有没有一种方法可以指向/输入这个?哦,不用担心-明白了!再次感谢!