2012-06-06 66 views
1

我有一个运行在Apache服务器上的Jekyll生成的网站,我在正确设置我的.htaccess文件时遇到了一些麻烦。 Jekyll将index.html文件放入代表每个页面的文件夹中,以便我的URL目前看起来像domain.com/foo/.htaccess显示目录index.html没有斜线

我想从URL中删除尾部斜杠,以便它完全符合我之前设置的内容(也因为我认为它看起来更好)。

目前我的.htaccess文件处理rewites的部分看起来像:

<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网址显示index.html文件的形式/ foo目录,并为domain.com/foo/和domain.com/foo/index.html重定向到域。 COM/foo中。

回答

3

您应该可以使用它关闭斜杠的添加。

DirectorySlash Off 

注意,斜杠添加一个很好的理由。无论URL以“foo/bar/index.html”结尾还是“foo/bar /”结尾,目录名中的尾部斜杠都会使相对URL指向相同的东西。如果没有结尾的斜杠,相对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的存在,如果它执行内部重定向。

+0

感谢您的回复,我认为这可能是答案的一半。这会阻止domain.com/foo重写为domain.com/foo/,但它不会从/ foo /目录中显示index.html文件 – mrappleton

+0

@mrappleton您可能需要添加单独的重写。我添加了一些可能适用于答案的东西。 –

+0

这是非常明智的。我只需要添加'RewriteRule ^(。+)/ $ http://floatleft.com/$1 [R = 301,L]',我得到了我之后的东西。非常感谢你的帮助! – mrappleton

相关问题