如何强制某些页面以斜线结尾[.htaccess]

时间:2008-11-27 18:03:47

标签: .htaccess

这是一个多站点问题。我有很多网站都有.htaccess文件,其中多行类似于:

rewriterule ^(page-one|page-two|page-three)/?$ /index.php?page=$1 [L]

这意味着www.domain.com/page-one和www.domain.com/page-one/都将加载www.domain.com/index.php?page=page-one

但是我总是被告知,确保每页只使用一个网址是一个很好的搜索引擎优化实践,所以我想做的是将www.domain.com/page-one重定向到www.domain。 com / page-one /通过.htaccess文件。

请注意我寻找的答案是从行尾删除?$,因为这会导致www.domain.com/page-one成为404链接。

3 个答案:

答案 0 :(得分:4)

这是一个强制所有内容以斜杠结尾的片段

rewritecond %{REQUEST_FILENAME} !-f
rewritecond %{REQUEST_URI} !(.*)/$
rewriterule ^(.*)$ http://%{HTTP_HOST}/$1/ [L,R=301]

答案 1 :(得分:2)

使用HTTP重定向将使用“错误”网址的用户发送到正确的网址。例如,你可以使用:

    RewriteRule ^(.+[^/])$ $1/ [R]

在你自己的RewriteRule之前。

请注意:这也会在以文件名结尾的URL中添加斜杠。如果您有这样的URL,则必须在重定向之前为它们添加例外。

另请参阅FAQ entry on trailing slashesexample page for mod_rewrite

答案 2 :(得分:1)

未经测试,但你不能这样做吗?

RewriteRule ^(.*[^/])$ $1/
RewriteRule ^(page-one|page-two|page-three)?$ /index.php?page=$1 [L]