我正在迁移域名。
我有一些网址,我需要将它们重定向到特定的网页,但其他一切都可以成为一个全面的后备。我还需要维护查询字符串。
E.g:
手动网址:
background
然后是其他一切的后备:
http://example.com/i-am-manual-redirect => https://example2.com/this-is-not-the-same-URL
http://example.com/i-am-manual-redirect2 => https://example2.com/somewhere-else
目前有:
http://example.com/same => https://example2.com/same
http://example.com/blah => https://example2.com/blah
但是,无论何时我添加后备,手动重定向都不起作用。
答案 0 :(得分:2)
您需要阻止RewriteRule处理您的手动,或使用mod_rewrite完成所有操作。我认为首先处理Mod_rewrite。或者全部更改为使用mod_rewrite。以下是对您所拥有内容的更新:
# Manual Redirects
Redirect 301 /i-am-manual-redirect https://example2.com/this-is-not-the-same-URL
Redirect 301 /i-am-manual-redirect2 https://example2.com/somewhere-else
# Fallback
RewriteCond %{REQUEST_URI} !=/i-am-manual-redirect
RewriteCond %{REQUEST_URI} !=/i-am-manual-redirect-2
RewriteCond %{HTTP_HOST} ^example.com [NC]
RewriteRule ^(.*)$ http://www.example2.com/$1 [L,R=301]
你知道你的前两个转到https://并回到http://吗?只是检查。
规则中不需要NC,因为正则表达式中没有指定字符。
当您指定完整的URL时,无需使用RedirectMatch,因为查询字符串未匹配。在这两种情况下,它都可以根据需要传递。