我有一个域oldexample.com,我想只在没有给出参数的情况下将访问该域的用户重定向到newexample.com。在域提供参数的情况下,它应该重定向到其他地方 - 因此,oldexample.com/?id=5不应该重定向到newexample.com,而是我想将它重定向到newexample.com中的某个内部目录,比如说到newexample.com/dir/5。
以下是我希望重定向如何工作的摘要:
oldexample.com -> newexample.com
oldexample.com/?id=3 -> newexample.com/dir/3
oldexample.com/index.php?id=6 -> newexample.com/dir/6
那么我如何在htaccess中编写RewriteRules来完成这项工作呢?
答案 0 :(得分:2)
尝试:
RewriteEngine On
# for /
RewriteCond %{HTTP_HOST} ^oldexample.com$ [NC]
RewriteCond %{QUERY_STRING} !id=
RewriteRule ^$ http://newexample.com/ [L,R=301]
# for /?id=###
RewriteCond %{HTTP_HOST} ^oldexample.com$ [NC]
RewriteCond %{QUERY_STRING} ^id=([0-9]+)
RewriteRule ^(index.php)?$ http://newexample.com/dir/%1? [L,R=301]
最后一条规则与/
和/index.php
匹配。这些规则必须位于oldexampl.com
文档根目录中的htaccess文件中。