我有一个www.example.com
在 Apache 上运行的网站。
也许有人通过example.com
, or www.example.com
, or http://example.com
, or even找到我http://www.example.com
。
我可以使用重写规则,.htaccess
以便无论它们到达example.com
,URL 都完全充实到http://www.example.com
?
我有一个www.example.com
在 Apache 上运行的网站。
也许有人通过example.com
, or www.example.com
, or http://example.com
, or even找到我http://www.example.com
。
我可以使用重写规则,.htaccess
以便无论它们到达example.com
,URL 都完全充实到http://www.example.com
?
假设 Apache 已经接受了对 www 子域和域顶点(即
example.com
)的请求,那么您可以使用类似于以下内容的方式将主机名规范化为 www ,使用.htaccess
文档根目录中文件顶部附近的 mod_rewrite 。以上将表单的任何请求重定向
example.com/<anything>
到http://www.example.com/<anything>
.REQUEST_URI
服务器变量包含完整的 URL 路径,包括斜杠前缀。原始请求中可能存在的任何查询字符串都将原封不动地传递。首先使用 302(临时)重定向进行测试,以避免潜在的缓存问题。
注意:
example.com
并且是相同的 - 浏览器只是隐藏协议(大多数用户http://example.com
默认为 HTTP )。和相同。www.example.com
http://www.example.com
更新:
如果您还没有这样做,则需要
.htaccess
在服务器配置中启用覆盖,否则该.htaccess
文件将被忽略。在(或主服务器配置)内的适当
<Directory>
容器中,<VirtualHost>
您需要设置AllowOverride
(默认为“无”)。例如:并且,如果您还没有,您需要启用 mod_rewrite:
调试
.htaccess
您可以
LogLevel
在服务器配置中增加(Apache 2.4+)以将调试信息输出到服务器的错误日志中。例如,在相应的<VirtualHost>
容器(或主服务器配置)中:这将为所有模块设置“日志级别”。默认值为
LogLevel warn
. 要仅针对特定模块,例如 mod_rewrite(上面使用),那么您可以仅指定该模块。例如。LogLevel rewrite:debug
.参考: