【发布时间】:2016-04-18 10:30:50
【问题描述】:
我已经在这个问题上花费了足够多的时间,但没有成功,所以是时候问了。
我现在遇到的问题的具体部分是将非 WWW URL 重定向到 WWW URL。有很多资源可以做到这一点,但没有一个能正常工作。
我目前有以下内容,文件中没有其他内容。
ErrorDocument 404 /404.php
Options -MultiViews
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
我也尝试了很多变体,包括带有硬编码 URL 的变体。
这是 XAMPP 和实时版本的各种浏览器上发生的情况。
XAMPP, Firefox. "example.com" -> "http://www.example.com/"
XAMPP, Chrome. "example.com" -> ERR_NAME_NOT_RESOLVED
XAMPP, Edge. "example.com" -> Hmm, we can't reach this page.
Live, Firefox. "example.com" -> "http://www.example.com/"
Live, Chrome. "example.com" -> "http://www.example.com/"
Live, Edge. "example.com" -> "http://www.example.com/"
(当我开始这篇文章时,Live,Edge 无法正常工作,但我忘记清除缓存。不过,我仍然有兴趣让它与 XAMPP 一起工作。)
这是禁用 301 重定向缓存的情况。为 XAMPP 设置了一个虚拟主机以将 example.com 映射到 htdocs/example。 example.com 映射到 hosts 文件中的 localhost。
如何让这些输入也适用于 XAMPP 托管服务器?任何解决方案都需要兼容干净的 URL、尾部斜杠、截断的斜杠和删除的 .php 扩展名。
谁让 Web 开发如此艰难...
【问题讨论】:
-
这听起来像是 DNS / 缓存问题。您发布的 .htaccess 代码没有任何问题,特别是如果这适用于某些环境而不适用于其他环境。当连接到本地 (XAMPP) 服务器时,您是否连接到互联网?如果您在 HOSTS 中定义了
example.com,那么您还需要在 HOSTS 中定义www.example.com,否则它将重定向到实时站点(如果它完全解析)。您的 VirtualHost 还需要能够接受对www.example.com的请求,而不仅仅是example.com。 -
太棒了,做到了。我添加了主机条目,然后添加了一个相等的虚拟主机条目,它工作正常。嗯,压力大了,非常感谢。如果您将其添加为答案,我会接受。