我在Apache2
中应用了以下mod_rewrite
规则,将非www重定向到www:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]
但是,有一个双斜线问题:
- 当我转到
http://www.example.com
时,它会正确地将URL重写为http://www.example.com/
- 当我转到
http://www.example.com/somepage
时,它会正确地将URL重写为http://www.example.com/somepage
*如果我转到http://example.com
,它会将URL重写为http://www.example.com//
(最后两个斜杠) - 如果我转到
http://example.com/somepage
,它会正确地将其重写为http://www.example.com/somepage
我的配置适合SEO吗?
5条答案
按热度按时间ngynwnxp1#
固定有:
因为
$1
默认包含索引路径/
t9eec4r02#
wwtsj6pe3#
实际上,由于
再加上REQUEST_URI(您要匹配的)通常包含一个起始斜杠,您可以尝试
RewriteRule ^(.*)$ http://example.com$1
,然后发送一个中断的HTTP请求GET foo HTTP/1.0
,看看Apache是否能正确处理它。u4vypkhs4#
在您的模式中加入斜线应该可以解决这个问题:
cnwbcb6i5#
这是因为根路径是
/
,并且您要追加RewriteRule
中的任何内容(第一种情况工作正常,因为它 * 不 * 匹配条件,所以不执行重写)。您可以尝试以下操作: