问题描述
我有与Apache httpd的作为前端运行一个Tomcat 6 Web应用程序。我使用mod_proxy和mod_proxy_ajp的转发请求到Tomcat。我的服务器运行的是Ubuntu Linux系统。现在,我试图使用mod_rewrite删除前导WWW,让自己的规范网站网址
我读过关于使用mod_rewrite一些教程,但我不能得到任何重写工作。我试图把在.htaccess文件重写规则(修改我的/ etc /阿帕奇/站点可用/默认文件来设置所有的AllowOverride之后)。我试过把重写规则在apache2.conf,httpd.conf文件,并rewrite.conf。我已经试过所有这些与重写日志功能。日志文件被创建,但Apache的写没有什么不可以。我想也许mod_proxy的在某种程度上preventing被用于重写规则,所以我尝试禁用该以及...我仍然没有得到改写,并没有到日志中。
在这一点上,我完全不知道下一个尝试的东西。我该如何去了解为什么Apache不使用我重写规则解决问题。
有关参考,在这里是我的改写指令:
< IfModule mod_rewrite.c> RewriteEngine叙述上
的RewriteCond%{HTTP_HOST} ^ $ www.domain.com [NC]
重写规则^(。*)$ http://domain.com/$1 [R = 301,L]
RewriteLog/var/log/apache2/rewrite.log
RewriteLogLevel 3< / IfModule>
修改:下面的反应是有助于我的具体情况,但可能不会作为有助于社区在超大因为你是如何在总体解决Apache指令答案。例如,有一种方法启用日志记录的地步,它会告诉我哪些指令以什么顺序的请求到达被应用?
编辑2 :我已经得到的东西现在的工作。我的虚拟主机都不太树立正确的,我也不太有重写正则表达式正确。下面是最终改写指令,我得工作:
< IfModule mod_rewrite.c>
RewriteEngine叙述在
的RewriteCond%{HTTP_HOST} ^万维网\\。域\\ .COM [NC]
(。*)重写规则^ $ HTTP://domain.com$1 [L,R = 301]
< / IfModule>
试图回答你的问题:要调试Apache操作可以调整的以一个较低的水平(也许调试
)。但是,即使你把调试
如果禁用日志有问题的模块,你不从它那里得到任何消息。例如,默认的 [RequestLogLevel] [2]
0,例如,模块不写任何消息。我看你把它设置好的3但像RoBorg说其更改为 9
,也许是太低,你的情况。
试图SOVE您的问题:尝试改变你使用逆形式重写主机的方式 - 看,如果主机名是你想要的,如果不是,将其更改为你想要的主机名。像
In their example, they change from example.com
to www.example.com
but you got the idea. Just adjust it for your case.
这篇关于如何排除为什么不是由阿帕奇采用我重写规则?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!