htaccess将特定的网址重定向到新域

时间:2019-02-05 12:53:06

标签: .htaccess

由于采用了新系统,我们希望将当前网站的某些页面重定向到新域。我找到了一种将全部流量重定向到新域的解决方案

Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^OLDDOMAIN\.com$ [NC]
RewriteRule ^(.*)$ http://NEWDOMAIN.com [R=301,L]

但是例如,我只希望重定向某些特定的URL。例如:

olddomain.com/user/login => newdomain.com
olddomain.com/freestuff => newdomain.com/freestuff
olddomain.com/order/course => newdomain.com/book-course
olddomain.com/order/course?course=1 => newdomain.com/book-course?course_id=1

对于所有网址,我还希望包括所有GET参数(请参见上一个示例)。

我对正则表达式不那么熟悉,无法弄清楚如何解决这个问题。

谢谢

1 个答案:

答案 0 :(得分:1)

您可以为每个要重定向的特定URL设置单独的规则:

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^olddomain\.com$ [NC]
RewriteRule ^/?user/login$ https://example.com/ [R=301]

RewriteCond %{HTTP_HOST} ^olddomain\.com$ [NC]
RewriteRule ^/?freestuff $ https://example.com/freestuff  [R=301]

RewriteCond %{HTTP_HOST} ^olddomain\.com$ [NC]
RewriteRule ^/?order/course$ https://example.com/book-course[R=301]

RewriteCond %{HTTP_HOST} ^olddomain\.com$ [NC]
RewriteCond %{QUERY_STRING} (?:^|&)course=(\d+)(?:&|$)
RewriteRule ^/?order/course$ https://example.com/book-course?course_id=%1  [R=301]

通常,最好在http服务器主机配置中实现这样的规则,而不要依赖动态配置文件(“ .htaccess”),但是两者都是可能的。