.htaccess 301使用回退重定向特定URL

时间:2017-01-08 19:25:43

标签: apache .htaccess redirect

我正在迁移域名。

我有一些网址,我需要将它们重定向到特定的网页,但其他一切都可以成为一个全面的后备。我还需要维护查询字符串。

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

但是,无论何时我添加后备,手动重定向都不起作用。

1 个答案:

答案 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,因为查询字符串未匹配。在这两种情况下,它都可以根据需要传递。