重定向创建通用规则

时间:2016-05-23 12:32:52

标签: .htaccess redirect

对于包含查询字符串的网页,有一些重定向规则

RewriteCond %{QUERY_STRING} ^PAGEN_1=1 [NC]
RewriteRule ^news/$ http://www.mysite.ru/news/$ [R=301,L]

RewriteCond %{QUERY_STRING} ^&PAGEN_1=1 [NC]
RewriteRule ^news/$ http://www.mysite.ru/news/$ [R=301,L]

RewriteCond %{QUERY_STRING} ^&PAGEN_1=2 [NC]
RewriteRule ^news/$ http://www.mysite.ru/news/?PAGEN_1=2 [R=301,L]

RewriteCond %{QUERY_STRING} ^&PAGEN_1=3 [NC]
RewriteRule ^news/$ http://www.mysite.ru/news/?PAGEN_1=3 [R=301,L]

RewriteCond %{QUERY_STRING} ^&PAGEN_1=4 [NC]
RewriteRule ^news/$ http://www.mysite.ru/news/?PAGEN_1=4 [R=301,L]


RewriteCond %{QUERY_STRING} ^PAGEN_1=1 [NC]
RewriteRule ^articles/2/$ http://www.mysite.ru/articles/2/ [R=301,L]

RewriteCond %{QUERY_STRING} ^&PAGEN_1=1 [NC]
RewriteRule ^articles/2/$ http://www.mysite.ru/articles/2/ [R=301,L]

RewriteCond %{QUERY_STRING} ^&PAGEN_1=2 [NC]
RewriteRule ^articles/2/$ http://www.mysite.ru/articles/2/?PAGEN_1=2 [R=301,L]

RewriteCond %{QUERY_STRING} ^&PAGEN_1=3 [NC]
RewriteRule ^articles/2/$ http://www.mysite.ru/articles/2/?PAGEN_1=3 [R=301,L]

RewriteCond %{QUERY_STRING} ^&PAGEN_1=4 [NC]
RewriteRule ^articles/2/$ http://www.mysite.ru/articles/2/?PAGEN_1=4 [R=301,L]

RewriteCond %{QUERY_STRING} ^&PAGEN_1=5 [NC]
RewriteRule ^articles/2/$ http://www.mysite.ru/articles/2/?PAGEN_1=5 [R=301,L]

RewriteCond %{QUERY_STRING} ^&PAGEN_1=6 [NC]
RewriteRule ^articles/2/$ http://www.mysite.ru/articles/2/?PAGEN_1=6 [R=301,L]

有没有办法共同编写这些规则,而不是每个查询字符串?

UPD 我用过这段代码

RewriteCond %{QUERY_STRING} ^PAGEN_1=1 [NC]
RewriteRule ^news/$ http://www.mysite.ru/news/$ [R=301,L]

RewriteCond %{QUERY_STRING} ^&PAGEN_1=1 [NC]
RewriteRule ^news/$ http://www.mysite.ru/news/$ [R=301,L]

RewriteCond %{QUERY_STRING} ^&PAGEN_1=([0-9]*)$ [NC]
RewriteRule ^news/(.*)$ http://www.mysite.ru/news/?PAGEN_1=%1 [R=301,L]




RewriteCond %{QUERY_STRING} ^PAGEN_1=1 [NC]
RewriteRule ^articles/2/$ http://www.mysite.ru/articles/2/ [R=301,L]

RewriteCond %{QUERY_STRING} ^&PAGEN_1=1 [NC]
RewriteRule ^articles/2/$ http://www.mysite.ru/articles/2/ [R=301,L]

RewriteCond %{QUERY_STRING} ^&PAGEN_1=([0-9]*)$ [NC]
RewriteRule ^articles/2/(.*)$ http://www.mysite.ru/articles/2/?PAGEN_1=%1 [R=301,L]

但我不确定。它有效,但我想也许应该更简单。

1 个答案:

答案 0 :(得分:1)

您可以使用:

RewriteCond %{QUERY_STRING} (?:^|&)PAGEN_1=1(?:&|$) [NC]
RewriteRule ^news/?$ http://www.mysite.ru/news/? [R=301,L]

RewriteCond %{QUERY_STRING} ^&PAGEN_1=(\d+)(?:&|$) [NC]
RewriteRule ^news/?$ http://www.mysite.ru/news/?PAGEN_1=%1 [R=301,L]

RewriteCond %{QUERY_STRING} (?:^|&)PAGEN_1=1(?:&|$) [NC]
RewriteRule ^articles/(\d+)/?$ http://www.mysite.ru/articles/$1/? [R=301,L]

RewriteCond %{QUERY_STRING} ^&PAGEN_1=(\d+)(?:&|$) [NC]
RewriteRule ^articles/(\d+)/?$ http://www.mysite.ru/articles/$1/?PAGEN_1=%1 [R=301,L]
相关问题