对于包含查询字符串的网页,有一些重定向规则
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]
但我不确定。它有效,但我想也许应该更简单。
答案 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]