mod_rewrite中的redirectMatch
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mod_rewrite中的redirectMatch相关的知识,希望对你有一定的参考价值。
我们最近将我们的网站移动到另一台服务器,比如http://newdomain.com
,而我们的旧网站就是说http://olddomain.com
我想保持旧网站上的用户目录可以像以前一样访问,即http://oldomain.com/~user
,但根文件夹下可访问的任何内容都指向新域。旧服务器上的用户目录位于/home/user
文件系统中。所以,我写了以下规则:
RedirectMatch permanent ^/~(.*) /home/~$1
RedirectMatch permanent ^/(.*) http://newdomain.com/$1
虽然第二条规则完美无瑕,但第一条仍然希望映射到新网站如下:http://newdomain.com/~user
。
如何修复这两个规则,以便旧网站上的/var/www/html
中的任何内容都重定向到新网站,但/home
下的任何内容都不会重定向?
--
这是基于Ben的解决方案的新代码,它正确地映射了用户主页访问的URL,但是浏览器抱怨并且不显示他们的站点。根文件夹URL重定向工作正常。
RewriteEngine on
# RewriteBase / -- I had to comment this as the apache did not like it
Rewriterule ^/~(.*) /~$1 [R=301,L]
RewriteCond %{REQUEST_URI} !^/home/~
RewriteRule ^/(.*) http://newdomain.com/$1 [R=301,L]
您应该使用RewriteCond
测试是否使用/home/~
的URI前缀,并使用RewriteRule
重写URL并进行永久重定向。
RewriteEngine On
RewriteBase /
RewriteRule ^~(.*) /home/~$1 [R=301,L]
RewriteCond %{REQUEST_URI} !^/home/~
RewriteRule ^(.*) http://newdomain.com/$1 [R=301,L]
第3行:如果URI前缀为~{any_characters}
,则将URI重写为/home/~{any_characters}
,永久重定向
第5行:测试URI是否不是/home/~{any_characters}
的前缀
第6行:然后处理重写规则,将{any_characters}
中的URI重写为http://newdomain.com/{any_characters}
,永久重定向
以上是关于mod_rewrite中的redirectMatch的主要内容,如果未能解决你的问题,请参考以下文章