首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RewriteCond的问题

RewriteCond的问题
EN

Stack Overflow用户
提问于 2013-08-26 18:36:39
回答 1查看 39关注 0票数 0

我有一个关于apache的重写模块的问题。这就是我想要做的:

我让confluence(tomcat)在一台服务器上运行,apache作为前端的反向代理。此外,我在apache中使用身份验证(表单auth)。因此,如果您尝试访问服务器/合流,则会被重定向到包含身份验证例程的文件login.php。如果登录成功,代理允许您访问tomcat。所有其他请求都会被阻塞。这对于除了server/login.php之外的每个请求都很容易,因为这个文件确实存在于htdocs中。所有其他请求都使用

代码语言:javascript
复制
FallbackResource wrong_url.shtml

现在,我想阻止对login.php的直接访问,因为这会使您陷入死胡同。

我试图通过使用带有${REQUEST_URI}的RewriteCond来实现这一点,因为phpinfo()给了我以下信息:

代码语言:javascript
复制
<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

不过,这是有道理的。现在我所做的是:

代码语言:javascript
复制
<VirtualHost *:80>
    ServerName 192.168.2.237
    RewriteEngine on

    RewriteCond %{REQUEST_URI} ^/login.php$
    RewriteRule ^/login.php$  wrong_url.shtml [L]

</VirtualHost>

但这并不能正常工作。它要么根本不起作用,要么让一切都崩溃。如果这是显而易见的,请原谅我,但我是重写的初学者。谁能告诉我我的错误在哪里,以便为我提供一个这样做的方法(可能,这真的很容易)?

EN

回答 1

Stack Overflow用户

发布于 2013-08-26 20:42:06

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

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

代码语言:javascript
复制
<VirtualHost *:80>
    ServerName 192.168.2.237
    Alias /login.php /wrong_url.shtml
</VirtualHost>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18442123

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档