我想要实现这样的目标:
当有人打开浏览器并直接访问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]确实是空的。
我现在完全不知道,非常感谢任何建议。