如何仅针对确切的URL重写

时间:2016-06-27 21:03:02

标签: apache mod-rewrite url-rewriting mod-proxy proxypass

我需要隐藏从sitename.domsitename.dom2的重定向,保持字符串的其余部分不受影响。

现在我用:

RewriteCond %{HTTP_HOST} ^sitename.dom
RewriteRule ^(.*) http://sitename.dom2/$1 [P]

它完美无缺。但。由于我网站上的多语言,首页有以下路径:

sitename.dom2/lang 

这就是为什么当用户调用 sitename.dom 时,他被重定向(隐藏)到 sitename.dom2 / 并且他正在获得404页面。

那么,请告知我如何仅针对确切的请求进行严格的重定向 sitename.dom

我曾尝试过

RewriteCond %{HTTP_HOST} ^sitename\.dom$
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^(.*) http://sitename.dom2\/lang [P]

没有运气。

BTW,网站语言子路径内部根本不受影响。 sitename.dom/lang/page的效果与sitename.dom/page

一样好

2 个答案:

答案 0 :(得分:0)

只需在第一个/lang指令中添加RewriteRule

RewriteEngine On
RewriteCond %{HTTP_HOST} ^sitename.dom$
RewriteRule ^ http://sitename.dom2/lang%{REQUEST_URI} [P]

答案 1 :(得分:0)

我必须在所有其他之前添加单个重定向。并且在此规则中使用dom2而不是dom1。

以下是解决方案:

RewriteEngine On

#redirect front page only:
RewriteCond %{HTTP_HOST} ^sitename\.dom2$ [OR]
RewriteCond %{HTTP_HOST} ^www\.sitename\.dom2$
RewriteRule ^/?$ "http\:\/\/sitename\.dom2/\lang" [L]

#redirect all other pages:
RewriteCond %{HTTP_HOST} ^sitename\.dom2
RewriteRule ^(.*) http://sitename\.dom1\/$1 [P]