我想要一个非常简单的功能,我希望当有人放置www时我的网站能够正常工作。在我的域名之前。我的喜好是将所有http://www.
请求重定向到http://
,而没有任何复杂的事情。
我为此尝试了两种方法,但都无法正常工作。第一种选择是简单地在网站的.htaccess
中添加以下重写引擎命令(据记录,我确认它可以正常工作)
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule (.*) http://example.com/$1 [R=301,L]
我尝试了此代码的多种变体,但没有一个可以做任何事情。即使在重置浏览器缓存后,也可以通过Tor访问,如果我使用前缀www.
进入我的网站,则该网站根本不会加载,并且Firefox给我一个“找不到服务器”错误。
我尝试的第二件事是删除所有重写代码,并简单地添加DNS记录A,其中主机www
指向我的IP地址。稍等片刻后,该网站现在可以正常工作!但是,这是非常不一致的,因为如果我要访问www.example.com
,它将删除www.
,但是如果我访问www.example.com/page.html
,它将不会删除它(但是它d仍然有效)。另一个奇怪的问题是,如果我输入www.example.com/folder/page
,它将把我发送到www.example.comfolder/page
。
有人对我应该做什么或我可能做错了什么有任何建议吗?
答案 0 :(得分:0)
这应该有效。
RewriteEngine On
RewriteCond %{HTTP_HOST} !^example\.com
RewriteRule (.*) http://example.com/$1 [R=301,L]
答案 1 :(得分:0)
(这不一定是答案,但是我的声誉还不足以发表评论。)
以前的注释看起来应该可以完成工作,因此重写时发生了意外情况。
您可以尝试在较低级别启用重写日志记录,以查看重写规则的情况。如果未发现问题,则将日志记录级别提高一级。请注意,记录mod_rewrite操作可能会产生非常大的日志,因此,请谨慎选择在测试平台或相对空闲的主机上进行尝试。
# Enable mod_rewrite
RewriteEngine On
# RewriteLogLevel: Controls verbosity of mod_rewrite log
# 0=off, 9=max
RewriteLogLevel 2
作为旁注和imo,我将在配置文件而不是.htaccess文件中执行此操作,因为此规则应在此主机/ vhost的整个站点范围内应用。这也使Apache无法通过忽略.htaccess文件来避免执行重写。