regex - 如何将子域重定向到其他域

标签 regex apache .htaccess mod-rewrite

我试图用 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/

相关文章:

android - 将Android客户端连接到python服务器时响应代码404

apache - 如何从 URL 中删除 anchor 标记?

使用正则表达式用四舍五入的数字替换字符串中的数字

php - fatal error : Call to undefined function mysql_connect() cannot solve

regex - 为什么这个正则表达式对于某些查询来说如此缓慢?

apache - .htaccess 文件未被读取

apache - .htaccess 重定向除某一域的一个又一个内部重定向之外的所有页面

.htaccess - 在 Laravel 5 项目上应用 SSL 后所有路由上的 404

python - 正则表达式标点符号拆分 [Python]

python - 如何使用 Beautiful Soup 查找 ID 不断变化的标签?