0

我遇到了 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>

但这不能正常工作。它要么根本不起作用,要么使一切崩溃。如果这很明显,请原谅我,但我是重写的初学者。谁能告诉我我的错在哪里为我提供了一种方法来做到这一点(可能,这真的很容易)?

4

1 回答 1

0

你检查过服务器日志吗?启用并设置 RewriteLogLevel(为 9)并调试请求流。

尽管对于这样的基本任务您并不需要 mod_rewrite,但请改用 mod_alias。

<VirtualHost *:80>
    ServerName 192.168.2.237
    Alias /login.php /wrong_url.shtml
</VirtualHost>
于 2013-08-26T12:42:05.963 回答