我有一个问题,我希望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变量,然后添加一个尾部斜杠。
做这件事最好的方法是什么?
非常感谢!
发布于 2015-12-15 02:11:35
我想说这就是你所需要的:
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样式文件。这些文件出了名的容易出错,实现起来很麻烦,更难调试,而且确实会降低服务器的运行速度。因此,只有在您确实需要时才依赖它们,例如,当您没有访问主机配置的权限时。
发布于 2015-12-15 03:26:27
您可以只使用一个规则来重定向这些urls:
尝试:
RewriteEngine on
RewriteRule ^(?:mobile/)?/([^/]+)/([^/]+)/([^-]+)-([^.]+)\.html$ http://example.com/$1/$4/? [NC,L,R]?在规则的末尾很重要,因为它丢弃了url中的原始查询字符串。
https://stackoverflow.com/questions/34273427
复制相似问题