RewriteCond的问题

时间:2013-08-26 10:36:39

标签: apache redirect mod-rewrite apache2

我遇到了apache重写模块的问题。这就是我想要做的事情:

我已经在服务器上运行了confluence(tomcat),并在前面使用apache作为反向代理。 另外,我在apache中使用authentification(形式auth)。因此,如果试图访问[server] / confluence,您将被重定向到包含authentification例程的文件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>

但这不能正常工作。它要么根本不工作,要么崩溃一切。 如果这很明显,请原谅我,但我是一个重写的初学者。任何人都可以告诉我,我的错,或者为我提供了一种方法(可以说,这很容易)?

1 个答案:

答案 0 :(得分:0)

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

虽然您不需要mod_rewrite来完成这样的基本任务,但请改用mod_alias。

<VirtualHost *:80>
    ServerName 192.168.2.237
    Alias /login.php /wrong_url.shtml
</VirtualHost>