由于未在地方添加http://前缀,我的网址包含断开的链接。我如何使用mod_rewrite替换它:
http://website.com/www.websitelink.com
应该到这里:
http://www.websitelink.com
答案 0 :(得分:3)
RewriteRule ^www\.websitelink\.com$ http://www.websitelink.com/ [R=301,NC,L]
换句话说,如果您的路径是 /www.websitelink.com( ^
是字符串的开头,$
是字符串的结尾;在正则表达式中,点是一个字符的通配符,必须逃脱)
(和[NC]
匹配不区分大小写 - /WWW.webSiteLink.COM也匹配),
[R=301]
重定向状态为“301(永久移动)”
到http://www.websitelink.com/
并且[L]
保留处理(不再处理重写规则)。
请注意,无论网站的域名是什么(例如适用于http://website.com/www.websitelink.com和http://www.website.com/www.websitelink.com),这都可以使用
如果您想匹配以您的域名结尾的所有路径,请删除起始^
:
RewriteRule www\.websitelink\.com$ http://www.websitelink.com/ [R=301,NC,L]
如果您想匹配没有www.
的偶数路径,请将其设为可选:
RewriteRule (www\.)?websitelink\.com$ http://www.websitelink.com/ [R=301,NC,L]
如@Litso所述,这与“域中路径”之后的路径不匹配;这应该与尾随路径匹配:
RewriteRule (www\.)?websitelink\.com/(.*)$ http://www.websitelink.com/$1 [R=301,NC,L]
匹配任何子域:
RewriteRule ([a-z0-9.-]+\.)?websitelink\.com/(.*)$ http://www.websitelink.com/$1 [R=301,NC,L]
并匹配任何域名:
RewriteRule ([a-z0-9.-]+\.)?([a-z0-9.-]+)\.com/(.*)$ http://www.$1.com/$2 [R=301,NC,L]