一个域的不同 apache redirect/rewrite 规则

different apache redirect/rewrite rules for one domain

有人可以帮我 url redirect/rewrite 吗?

  1. example.com/url/* --> newdomain.com/new/path/url/* 不显示转发的 url
  2. example.com/* --> newdomain.com/new/path/to/go/* 不显示转发的 url
  3. example.com --> newdomain.com 显示已转发 url

我已经在 VHost 文件中尝试了 RedirectMatch 或 Rewirite 规则...

  1. RedirectMatch ^/url/(.*)$ http://newdomain.com/new/path/url/url/$1
  2. RedirectMatch ^/(.*)$ http://newdomain.com/new/path/go/$1
  3. 重写引擎开启 RewriteCond %{HTTP_HOST} ^example.com$ 重写规则 ^(.*)$ http://newdomain.com/$1

感谢帮助!!

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

如果确实需要(如果两个域都托管在一台没有虚拟主机的服务器上),请将其放在前面:

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/ [P,L]
RewriteRule  ^/(.*)$ http://newdomain.com/new/path/to/go/ [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/
ProxyPassMatch  /(.+) http://newdomain.com/new/path/to/go/
ProxyPassReverse / http://newdomain.com/