这很容易,但它正在驱使我的坚果。我在使用RewriteCond时总是评估为false。案件的一些事实:
1:我的系统是Apache / 2.4.6(CentOS)。 2:我安装了proxy_module proxy_http_module并安装了rewrite_module。 3:我的公共html文件夹位于var / www / html。没有符号链接或别名。
好吧,这笔交易就是我有这个链接:
http://mycoolsite.com/fake/
我只是想将其重定向到
http://mycoolsite.com/real/
此规则完全正常:
RewriteRule ^fake/(.*)$ http://mycoolsite.com/real/$1 [R=301,L]
将所有流量从一个文件夹发送到另一个文件夹。但是,如果我在该规则面前有这个RewriteCond:
RewriteCond ${REQUEST_URI} ^/fake/$
RewriteRule ^fake/(.*)$ http://mycoolsite.com/real/$1 [R=301,L]
然后这个网址:
http://mycoolsite.com/fake/
将我带到假目录,这就是结束。 RewriteRule被忽略。我用PHP记录了服务器变量,我看得很清楚:'REQUEST_URI'=> '/假/'。所以url应该直接通过RewriteRule。那么为什么我的RewriteCond会停止流动呢?我知道这里有一些非常简单的东西。这是htaccess文件的完整列表。
Options +FollowSymLinks
RewriteEngine On
RewriteCond ${REQUEST_URI} ^/fake/$
RewriteRule ^fake/(.*)$ http://glowingbluecore.com/real/$1 [R=301,L]
(抢先问题 - 这个例子只是为了说明我在使用RewriteCond时遇到的麻烦。我不是试图将流量从一个文件夹重定向到另一个文件夹。)
答案 0 :(得分:1)
你拼错了变量名。它是% {REQUEST_URI}
而非${REQUEST_URI}
,这就是您的条件失败的原因。
RewriteCond %{REQUEST_URI} ^/fake/$