apache RewriteCond与空的http_referer不匹配

时间:2014-01-16 06:40:06

标签: apache .htaccess mod-rewrite

我想要实现这样的目标:

当有人打开浏览器并直接访问http://www.example/controller.php时,请求将被重定向到错误页面。但是,如果用户在我的网站上点击了http://www.example/controller.php的链接,该请求将被重定向到http://www.example/controller

为此,我在.htaccess文件中编写以下重写文件:

   RewriteCond %{REQUEST_URI} ^/controller\.php
   RewriteCond %[HTTP_REFERER] ^$
   RewriteRule ^(.*)$ https://%{HTTP_HOST}/controller/error [R,L]

但遗憾的是RewriteCond %[HTTP_REFERER] ^$不匹配。我的所有其他rewriterules工作正常。为了丢弃其他rewriterules的副作用,我删除了所有其他规则,但它仍然不起作用。 因此,当从浏览器直接访问URL时,我猜可能%[HTTP_REFERER]不为空。然后我在上面的重写之前写下以下规则:

RewriteRule (.*) https://www.google.com/?referer=%{HTTP_REFERER} [R=301,L,QSA]

然后重定向到https://www.google.com/?referer=

所以%[HTTP_REFERER]确实是空的。

我现在完全不知道,非常感谢任何建议。

0 个答案:

没有答案