【问题标题】:How can I set the RewriteCond for the exact URL only?如何仅为确切的 URL 设置 RewriteCond?
【发布时间】:2016-10-30 00:18:58
【问题描述】:

我需要从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]

没有运气。

顺便说一句,网站语言子路径内部根本不受影响。 sitename.dom/lang/pagesitename.dom/page 一样好用

【问题讨论】:

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


    【解决方案1】:

    我必须在所有其他重定向之前添加单个重定向。并在此规则中使用 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]
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 谢谢,但没用。我想我以前尝试过类似的东西。现在我在 citename.dom 和 citename.dom/lang 上都得到了 404。无法进入首页
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-03
      • 2021-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多