English 中文(简体)
如何强制某些页面以斜线结束 [.htaccess]
原标题:
  • 时间:2008-11-27 18:03:47
  •  标签:

这是一个多站点问题。我的许多站点都有类似于以下多行的.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。

然而,我经常被告知,良好的SEO实践是确保每个页面仅使用一个URL,因此我想通过.htaccess文件使www.domain.com/page-one重定向到www.domain.com/page-one/。

请注意,我不希望的答案是在行尾删除“?$”,因为这只会导致www.domain.com/page-one成为404链接。

最佳回答

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

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

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

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

在您自己的RewriteRule之前。

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

另请参阅关于末尾斜杠的常见问题解答mod_rewrite示例页面

未经测试,但是你不可以只是这样做吗?

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




相关问题
热门标签