2015-12-14 30 views
1

我有一个查询,我希望URL重写向导可以帮助我,因为这是一个超越我。重定向4个不同的URL到一个URL

我有以下网址:

http://www.domain.com/region/news/123456-article-name-goes-here.html http://www.domain.com/region/news/123456-article-name-goes-here.html?get_var=1234 http://www.domain.com/mobile/region/news/123456-article-name-goes-here.html http://www.domain.com/mobile/region/news/123456-article-name-goes-here.html?get_var=1234

我需要所有这些变化的重定向到URL的格式如下:

http://www.domain.com/region/article-name-goes-here/

所以我需要删除'mobile /',删除' news /',删除'123456-',删除.html,删除任何GET变量,然后添加尾部斜杠。

要做到这一点,最好的方法是什么?

非常感谢!

回答

1

我会说这是你所需要的:

RewriteEngine on 
RewriteRule ^/region/news/\d+-(.+)\.html$ http://www.domain.com/region/$1/ [R=301,L] 
RewriteRule ^/mobile/region/news/\d+-(.+)\.html$ http://www.domain.com/region/$1/ [R=301,L] 

你可以做一个规则,但上述是比较容易理解,所以我会用两条规则。


注意:这是主机配置的版本。如果您需要使用.htaccess样式文件,则必须从规则中的模式中删除前导斜杠,因为这些文件适用于相对路径。但请注意,只要有可能,您应该更喜欢htaccess样式文件的主机配置变体。这些文件出了名的错误容易出现,实施起来很麻烦,难以调试,并且真的会减慢服务器速度。所以只有依靠他们,如果你真的必须,例如,如果你没有访问主机配置。

+0

@PanamaJack的原始querystring这确实是可能的。不过,我认为这是不好的风格。它使事情变得更加复杂和混乱,而没有为特定的应用程序提供好处。如果你实施这些规则,那么你知道你在哪里放置它们。 – arkascha

0

你可以只使用一个单一的规则来重定向这些网址:

尝试:

RewriteEngine on 
RewriteRule ^(?:mobile/)?/([^/]+)/([^/]+)/([^-]+)-([^.]+)\.html$ http://example.com/$1/$4/? [NC,L,R] 

?在规则的末尾非常重要,因为它丢弃了URL

相关问题