由于采用了新系统,我们希望将当前网站的某些页面重定向到新域。我找到了一种将全部流量重定向到新域的解决方案
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参数(请参见上一个示例)。
我对正则表达式不那么熟悉,无法弄清楚如何解决这个问题。
谢谢
答案 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”),但是两者都是可能的。