一个域的不同apache重定向/重写规则

时间:2017-03-28 09:14:47

标签: apache redirect url-rewriting virtualhost

有人可以通过网址重定向/重写来帮助我吗?

  1. example.com/url/* - > newdomain.com/new/path/url/* 未显示转发的网址
  2. example.com/* - > newdomain.com/new/path/to/go/* 未显示转发的网址
  3. example.com - > newdomain.com 显示转发的网址
  4. 我在VHost文件中尝试过RedirectMatch或Rewirite规则......

    1. RedirectMatch ^ / url /(.*)$ http://newdomain.com/new/path/url/url/$1
    2. RedirectMatch ^ /(。*)$ http://newdomain.com/new/path/go/$1
    3. RewriteEngine on RewriteCond%{HTTP_HOST} ^ example.com $ RewriteRule ^(。*)$ http://newdomain.com/$1
    4. 感谢您的帮助!!

1 个答案:

答案 0 :(得分:0)

要压缩转发的URL,请使用[P]作为参数并使用重写而不是重定向,对于起始页使用R = 301来永久重写到新域:

如果真的需要(如果两个域都托管在没有vhost的一台服务器上)将它放在前面:

RewriteEngine On

RewriteCond %{HTTP_HOST} !^example.com$
RewriteRule .? - [S=3]
RewriteRule  ^/$ http://newdomain.com/ [R=301,L]
RewriteRule  ^/url/(.*)$ http://newdomain.com/new/path/url/$1 [P,L]
RewriteRule  ^/(.*)$ http://newdomain.com/new/path/to/go/$1 [P,L]

让我们知道它是否按预期工作,如果没有,出现了什么问题:)

<强>更新

将它放在LoadModule conf:

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

这是你重写等的地方:

RewriteEngine On

RewriteCond %{HTTP_HOST} example.com$
RewriteRule  ^/$ http://newdomain.com/ [R=301,L]

ProxyPreserveHost on
ProxyPassMatch  /url/(.+) http://newdomain.com/new/path/url/$1
ProxyPassMatch  /(.+) http://newdomain.com/new/path/to/go/$1
ProxyPassReverse / http://newdomain.com/