【问题标题】:http://www. to http:// redirect not working at allhttp://www。到 http:// 重定向根本不起作用
【发布时间】:2019-02-12 06:03:16
【问题描述】:

我想要一个相当简单的功能,当有人输入 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,它就不会删除它(但它仍然可以工作)。另一个奇怪的问题是,如果我输入www.example.com/folder/page,它会将我发送到www.example.comfolder/page

有没有人对我应该做什么或我可能做错什么有任何建议?

【问题讨论】:

  • 对于更简单的重定向需求,请查看mod_alias 及其Rewrite 指令,这比mod_rewrite 简单得多,如果可能的话,您应该尝试使用主要的Apache 配置文件而不是.htaccess,特别适合重定向需求。

标签: html apache .htaccess redirect


【解决方案1】:

这应该可行。

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

【讨论】:

  • 试过这个,但也没有做任何事情。我完全错过了什么吗?由于有 10 种左右不同的 RewriteEngine 代码,我尝试了它们都没有做任何事情。
【解决方案2】:

(这不一定是答案,但我的声誉还不足以发表评论。)

之前的评论看起来应该可以完成这项工作,所以重写时发生了一些意想不到的事情。

您可以尝试在低级别启用重写日志记录,以查看重写规则发生了什么。如果未发现问题,则将日志记录级别提高一级。请注意,记录 mod_rewrite 操作可能会产生非常大的日志,因此在测试平台或相对空闲的主机上尝试此操作是谨慎的。

# Enable mod_rewrite
RewriteEngine On

# RewriteLogLevel: Controls verbosity of mod_rewrite log
#                  0=off, 9=max
RewriteLogLevel 2

作为旁注和 imo,我会在配置文件中而不是在 .htaccess 文件中执行此操作,因为此规则应在此主机/虚拟主机上应用到站点范围内。这也使得 Apache 无法通过忽略 .htaccess 文件来避免执行重写。

【讨论】:

    猜你喜欢
    • 2021-04-15
    • 2020-02-03
    • 2018-10-24
    • 1970-01-01
    • 2018-09-26
    • 2016-01-20
    • 2015-10-03
    • 2014-07-27
    • 2015-02-16
    相关资源
    最近更新 更多