htaccess RewriteCond总是假的

时间:2018-01-19 16:50:24

标签: apache .htaccess redirect mod-rewrite

这很容易,但它正在驱使我的坚果。我在使用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时遇到的麻烦。我不是试图将流量从一个文件夹重定向到另一个文件夹。)

1 个答案:

答案 0 :(得分:1)

你拼错了变量名。它是% {REQUEST_URI}而非${REQUEST_URI},这就是您的条件失败的原因。

RewriteCond %{REQUEST_URI} ^/fake/$