【问题标题】:Apache redirect for multiple domainsApache重定向多个域
【发布时间】:2020-01-16 22:26:14
【问题描述】:

我有一系列域,例如:

payroll.olddomain.com
billing.olddomain.com
support.olddomain.com
etc...

我需要将它们全部重定向到:

payroll.newdomain.com
billing.newdomain.com
support.newdomain.com
...

我可以通过一系列虚拟主机段落以暴力方式处理此问题,每个域一个段落,如下所示:

<VirtualHost *:80>
    ServerName payroll.olddomain.com
    Redirect permanent / http://payroll.newdomain.com/
</VirtualHost>
...

或者我可以使用一系列重写,每个域一个,如下所示:

RewriteCond "%{HTTP_HOST}"   "payroll.olddomain.com" [NC]
RewriteRule .  "payroll.newdomain.com%{REQUEST_URI}" [L,R=301]
...

但如果可能的话,我真正想做的是找到一种简单而优雅的方式(伪代码):

redirect <anything>.olddomain.com to <anything>.newdomain.com

我认为解决方案将包括 regexp 的东西,类似于(更伪):

redirect (.*)\.olddomain\.com to http://$1.newdomain.com

关于如何做到这一点的任何想法?有没有可能?

谢谢!

【问题讨论】:

    标签: apache redirect url-rewriting


    【解决方案1】:

    这应该可以。把它放在你的根 .htaccess 文件中。确保 mod_rewrite 已启用。

    RewriteEngine On #Don't use twice.
    
    RewriteCond %{HTTP_HOST} ^(.+?)\.olddomain\.com$ [NC]
    RewriteRule ^ http://%1.newdomain.com%{REQUEST_URI} [R=301,L]
    

    【讨论】:

    • 太棒了,谢谢!我不知道可以在后续的 RewriteRule 中引用来自 RewriteCond 的捕获模式“(.+?)”。它完美地工作。我确实阅读了文档,但这种能力并不清楚。这真的很强大。再次感谢!
    猜你喜欢
    • 2011-02-18
    • 1970-01-01
    • 1970-01-01
    • 2020-07-26
    • 1970-01-01
    • 2011-05-28
    • 1970-01-01
    • 1970-01-01
    • 2012-02-18
    相关资源
    最近更新 更多