Mod rewrite 如何使用mod_rewrite在域之间重定向多个主机?

Mod rewrite 如何使用mod_rewrite在域之间重定向多个主机?,mod-rewrite,apache2.2,Mod Rewrite,Apache2.2,我正在尝试将拼写错误的域名请求重定向到官方域名上的同一服务器 我的apache配置如下所示: <VirtualHost *:80> RewriteEngine on # Fix domain spellings in host.<backupdomain> RewriteCond %{HTTP_HOST} !([^.]+).example.com [NC] RewriteRule ^/(.*) http:/

我正在尝试将拼写错误的域名请求重定向到官方域名上的同一服务器

我的apache配置如下所示:

<VirtualHost *:80>
        RewriteEngine on

        # Fix domain spellings in host.<backupdomain>
        RewriteCond %{HTTP_HOST} !([^.]+).example.com [NC]
        RewriteRule ^/(.*) http://%1.example.com/$1 [NC,R,L]
</VirtualHost>

重新启动发动机
#修复主机中的域拼写。
重写cond%{HTTP_HOST}!([^.]+).example.com[NC]
重写规则^/(*)http://%1.example.com/$1[NC,R,L]
我知道我很接近了,因为对server99.ErrorDomain的请求会被重新写入到.example.com,我希望它会进入server99.example.com

为什么正则表达式捕获/扩展在这里不能正常工作


另外,令人非常恼火的是,SO阻止了我的原始示例,因为它们看起来像链接(!)

如果你想匹配某个内容,而不是后面跟其他内容,那么你可以使用消极前瞻

RewriteCond %{HTTP_HOST} ^([^.]+)\.(?!example\.com) [NC]
RewriteRule ^/(.*)$ http://%1.example.com/$1 [NC,R,L]
这样,每个错误的域(例如使用
server99

  • server99.example.co.uk
  • server99.exampel.com

将重定向到
server99.example.com

,这几乎就是您需要的一切,以防您只想重定向拼写错误的子域

<VirtualHost *:80>
ServerName *.example.com

RedirectMatch 301 /(.*) http://www.example.com/$1

</VirtualHost>

ServerName*.example.com
重定向匹配301/(*))http://www.example.com/$1
如果要重定向没有uniqe VHost配置的每个请求,请使用以下命令并确保它是apache加载的第一个VHost配置

<VirtualHost _default_:80>
RedirectMatch 301 /(.*) http://www.example.com/$1
</VirtualHost>

重定向匹配301/(*))http://www.example.com/$1

当然,只有当FQDN的DNS记录指向有问题的apache时,这才起作用。

将这些链接放在backticks中:
像这样
在您的情况下,
错误域
可能是什么?域的单个部分(例如
ErrorDomain
)或多个部分(例如
Error.domain.to.avoid
)?@JustinIurman-ErrorDomain将是exampel.com、exampel.co.uk、example.co.uk