如何在tomcat服务器中将www重写为非www

如何在tomcat服务器中将www重写为非www

我在安装了 centos 的 vps 服务器上运行 tomcat 服务器。我的网站使用 mydomain.com 和 www.mydomain.com 进行浏览。但我不想在我的网址中看到 www。即,如果我使用 www.mydomain.com 进行浏览,它应该被重定向到 mydomain.com。

为此,我在我的 context.xml 中添加了 Rewrite 阀门,还在 /opt/apache/conf/Catalina/mydomain.com 中创建了 rewrite.config 文件,并添加了以下重写规则

RewriteCond %{HTTP_HOST} ^www.mydomain.com [NC]

重写规则 ^(.*)$ mydomain.com/$1 [L,R=301]

但它不起作用。当我使用 www.mydomain.com 浏览时,网址保持不变。它没有重定向到 mydomain.com

请指出我哪里做错了。

答案1

首先,您的重写规则有一个小错误。它应该使用完整的 URL 进行重定向(参见描述重定向旗帜):

RewriteCond %{HTTP_HOST} ^www.example.com [NC]
RewriteRule ^(.*)$ http://example.com$1 [L,R=301]

但是这并不能解释为什么重写规则没有被触发。如上面的评论所述,您必须确保文件rewrite.config位于写入位置。使用默认server.xml配置(引擎名称Catalina,主机名localhost),您需要将其放入:

  • $CATALINA_BASE/conf/Catalina/localhost如果你将添加到你的元素RewriteValve中。<Host>server.xml
  • 您的应用程序的文件WEB-INF夹,如果您将其添加到了应用程序的元素RewriteValve中。<Context>

无论如何,它可能会帮助您提高 Servlet 记录器的日志级别:

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = FINE

$CATALINA_BASE/conf/logging.properties它将记录到localhost.<date>.log以下行:

Read configuration from: ...
Add rule with pattern ^(.*)$ and substitution http://example.com$1 
Add condition ^www.example.com test %{HTTP_HOST} to rule with pattern ^(.*)$ and substitution http://example.com$1 [NC] 

只要RewriteValve正确配置即可。

相关内容