我有一个关于apache的重写模块的问题。这就是我想要做的:
我让confluence(tomcat)在一台服务器上运行,apache作为前端的反向代理。此外,我在apache中使用身份验证(表单auth)。因此,如果您尝试访问服务器/合流,则会被重定向到包含身份验证例程的文件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>但这并不能正常工作。它要么根本不起作用,要么让一切都崩溃。如果这是显而易见的,请原谅我,但我是重写的初学者。谁能告诉我我的错误在哪里,以便为我提供一个这样做的方法(可能,这真的很容易)?
发布于 2013-08-26 20:42:06
你检查过服务器日志了吗?启用并设置RewriteLogLevel (设置为9)并调试请求流。
尽管对于这样的基本任务,您并不真正需要mod_rewrite,但请改用mod_alias。
<VirtualHost *:80>
ServerName 192.168.2.237
Alias /login.php /wrong_url.shtml
</VirtualHost>https://stackoverflow.com/questions/18442123
复制相似问题