我试图用 htaccess mod-rewrite 完成的事情:
使用重写规则将所有子域重定向到新域名。
例如
test1.olddomain.com ===> test1.newdomain.com
test2.olddomain.com ===>test2.newdomain.com
test3.olddomain.com ===> test3.newdomain.com
这就是我目前所知道的当然是错误的:
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^olddomain\.com$ [NC]
RewriteRule ^(.*)$ http://www.newdomain.com/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^www\.olddomain\.com$ [NC]
RewriteRule ^(.*) http://www.newdomain.com/$1 [R=301,L]
RewriteRule [a-zA-Z]+\.olddomain.com$ http://$1.newdomain.com/ [R=301,L]
因为我还不是正则表达式迷,所以我需要您的帮助...感谢您在这里提供的任何帮助。我也知道我们可以将前两个条件合二为一。
注意:我不使用 DNS 重定向所有域的原因是很多目录需要特殊的重写规则以保持在 SEO 上的位置。
最佳答案
在 .htaccess 文件中,RewriteRules 匹配的“URL”已从域名和任何指向当前目录的目录中删除。 (在 .htaccess 文件中使用 mod_rewrite 是一个巨大的痛苦;如果你有权访问服务器 conf,那就在那里做!!)
因此,假设您的 .htaccess 在您的 DocumentRoot 中,请尝试如下操作:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(.*)olddomain\.com$ [NC]
RewriteRule ^(.*)$ http://%1newdomain.com/$1 [R=301,L]
%1 应该匹配 RewriteCond 中的第一组,$1 应该匹配 URL 部分。
关于regex - 如何将子域重定向到其他域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2970600/