我做了一些URL屏蔽,一切都很好用。我现在有一个问题要解决:
RewriteRule ^(.*)/(.*)/clubs/(.*)/$ teams.php?competition=$1&season=$2&teamid=$3
通过上述内容我可以通过2种方式访问同一页,www.domain.com/premier-league/2010-2011/arsenal/
和www.domain.com?competition=premier-league&season=2010-2011&teamid=arsenal
我的重写规则中是否有一种方法我可以重定向网址(理想情况下是301)有人是通过不整洁的方式“www.domain.com?competition=premier-league&season=2010-2011&teamid=arsenal
”进行的吗?
提前致谢
答案 0 :(得分:0)
如果在符合“反向”模式的规则之后添加另一个重写规则,并将两者都标记为[L] ast规则,则可能有效。我首先重写url以包含查询字符串,然后[C]将该字符串包含在下一个规则中。之后我们[R]对浏览器进行了描述。
RewriteRule ^(.)/(.)/clubs/(.*)/$ teams.php?competition=$1&season=$2&teamid=$3 [L]
RewriteRule ^(.+) $1%{QUERY_STRING} [C]
RewriteRule ^teams.php?competition=([a-zA-Z0-9]+)&season=([a-zA-Z0-9]+)&teamid=([a-zA-Z0-9]+)$ $1/$2/clubs/$3/ [R=301,L]
注意我没有测试过这个或第二条规则的正则表达式。可能需要稍微调整字符范围。另外,我还没有在第二条规则中测试查询字符串重写。
修改:有关mod_rewrite
:http://httpd.apache.org/docs/2.0/misc/rewriteguide.html