我遇到了 apache 的重写模块的问题。这就是我想要做的:
我已经让 confluence(tomcat) 在前面有 apache 作为反向代理的服务器上运行。另外,我在 apache 中使用身份验证(表单身份验证)。因此,如果您尝试访问 [server]/confluence,您将被重定向到包含身份验证例程的文件 login.php。如果登录成功,代理让你访问 tomcat。其他所有请求都被阻止。这对于除 [server]/login.php 之外的每个请求都很容易,因为该文件确实存在于 htdocs 中。其他所有请求都使用
FallbackResource wrong_url.shtml
现在我想阻止对 login.php 的直接访问,因为你会陷入死胡同。
我试图通过使用带有 ${REQUEST_URI} 的 RewriteCond 来做到这一点,因为 phpinfo() 给了我这个:
<server>/confluence (you automatically get redirected to login.php by apache): php says REQUEST_URI = /confluence
<server>/login.php: php says REQUEST_URI = /login.php
不过,这是有道理的。现在我所做的是:
<VirtualHost *:80>
ServerName 192.168.2.237
RewriteEngine on
RewriteCond %{REQUEST_URI} ^/login.php$
RewriteRule ^/login.php$ wrong_url.shtml [L]
</VirtualHost>
但这不能正常工作。它要么根本不起作用,要么使一切崩溃。如果这很明显,请原谅我,但我是重写的初学者。谁能告诉我我的错在哪里为我提供了一种方法来做到这一点(可能,这真的很容易)?