.htaccess 301 重定向 XAMPP

.htaccess 301 redirects for XAMPP

我已经在这个问题上花费了足够多的时间,但没有成功,所以是时候问了。

我现在遇到的问题的具体部分是将非 WWW URL 重定向到 WWW URL。有很多资源可以做到这一点,none 工作正常。

我目前有以下内容,文件中没有其他内容。

ErrorDocument 404 /404.php

Options -MultiViews

RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/ [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/"

(当我开始 post 时,Live、Edge 不工作,但我忘了清除缓存。不过我仍然有兴趣让它与 XAMPP 一起工作。)

这是禁用了 301 重定向缓存。为 XAMPP 设置了虚拟主机以将 example.com 映射到 htdocs/example。 example.com 映射到主机文件中的本地主机。

如何让这些输入也适用于 XAMPP 托管服务器?任何解决方案都需要与干净的 URL、尾部斜杠、截断的斜杠和删除的 .php 扩展兼容。

谁让web开发这么难...

这似乎是一个与 DNS 相关的问题。

A virtual host is set for XAMPP to map example.com to htdocs/example. example.com is mapped to localhost in the hosts file.

如果您在 HOSTS 文件中定义了 example.com,那么您还需要在 HOSTS 中定义 www.example.com,否则它将重定向到实时站点(如果它完全解析)是 www.example.com 指向的地方。

您的本地 VirtualHost 还需要能够接受对 www.example.com 的请求,而不仅仅是 example.com。如果使用 name-based 虚拟主机,则可以使用 ServerAlias,例如:

ServerAlias www.example.com