我遇到了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>
但这不能正常工作。它要么根本不工作,要么崩溃一切。 如果这很明显,请原谅我,但我是一个重写的初学者。任何人都可以告诉我,我的错,或者为我提供了一种方法(可以说,这很容易)?
答案 0 :(得分:0)
您检查过服务器日志吗?启用并设置RewriteLogLevel(至9)并调试请求流。
虽然您不需要mod_rewrite来完成这样的基本任务,但请改用mod_alias。
<VirtualHost *:80>
ServerName 192.168.2.237
Alias /login.php /wrong_url.shtml
</VirtualHost>