我正在尝试将具有非空 REQUEST_URI 的任何 URL 重写到另一个域,同时保留 REQUEST_URI。这个想法是这个域上只存在 www.example.com,任何其他请求都应该转到 www.example2.com。
我已验证 www.example.com 的 REQUEST_URI 为“/”。
例如
www.example.com -> should not be rewritten
www.example.com/test.php -> should be rewritten to www.example2.com/test.php
www.example.com/test2.php?id=123 -> should be rewritten to www.example2.com/test2.php?id=123
[更新] 我尝试将 REQUEST_URI 与“/”进行比较,但这会重定向所有内容:
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/$
RewriteRule ^(.+)$ http://www.example2.com/$1 [L,QSA]
我试图检查文件或目录是否存在然后重定向它,但这甚至重定向了基本页面(www.example.com)
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ http://www.example2.com/$1 [L,QSA]
我试图检查斜杠后是否有内容,但没有重定向:
RewriteEngine on
RewriteRule ^.+/(.+)$ http://www.example2.com/$1 [L,QSA]
任何人都可以提出一个可行的解决方案吗?看起来它应该很简单,但我似乎无法让它工作。
谢谢。
解决方案:
仅供参考:我最终采用的解决方案是:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ http://www.example2.com/$1 [R,L,QSA]
原因是如果我在 www.example.com 上有任何图像,它们将被重写为 www.example2.com。[R] 是使基本 URL 重定向问题正常工作的原因。感谢 poncha 指出了这一点。