如何用htaccess删除网址的一部分

时间:2010-11-26 11:34:44

标签: .htaccess mod-rewrite url-rewriting

由于未在地方添加http://前缀,我的网址包含断开的链接。我如何使用mod_rewrite替换它:

http://website.com/www.websitelink.com

应该到这里:

http://www.websitelink.com

1 个答案:

答案 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.comhttp://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]