非万维网。域未重定向到 www。领域
Posted
技术标签:
【中文标题】非万维网。域未重定向到 www。领域【英文标题】:non-www. domain not redirecting to www. domain 【发布时间】:2015-12-16 16:57:04 【问题描述】:简而言之
工作正常: www.exampledomain.co.uk/with-any-url出现 404 错误: exampledomain.co.uk/with-any-url
详细说明
我遇到了一个在 linux/apache2 上运行的站点的问题,即“www.”。网址工作正常,但使用“www.”删除每个 url 都会返回 404。该域在 dnsstuff.com 检查中未显示错误,www 和常规域指向相同的 IP 地址。
当我使用 cmd ping 域和 www 时。域,都解析到相同的 IP 并响应。
我在 Web 根目录中的 .htaccess 文件中实现了此代码,该文件用于添加“www.”。处理非 www 请求:
Options +FollowSymlinks
Options All -Indexes
RewriteEngine on
RewriteBase /
RewriteCond %HTTP_HOST !^$
RewriteCond %HTTP_HOST !^www\. [NC]
RewriteCond %HTTPSs ^on(s)|
RewriteRule ^http%1://www.%HTTP_HOST%REQUEST_URI [R=301,L]
但是,这也不起作用。确切的重写规则经过测试并在另一个站点上运行以强制执行“www.”。加前缀。
这是正在使用的 vhosts conf 文件:
<VirtualHost *:80>
ServerAdmin exampleuser@exampledomain.co.uk
ServerName www.exampledomain.co.uk
ServerAlias exampledomain.co.uk
DirectoryIndex index.php index.html
DocumentRoot /home/exampleuser/public/example.co.uk/public_html
<Directory /home/exampleuser/public/example.co.uk/public_html>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
LogLevel warn
ErrorLog /home/exampleuser/public/example.co.uk/log/error.log
CustomLog /home/exampleuser/public/example.co.uk/log/access.log combined
</VirtualHost>
<VirtualHost *:80>
ServerName exampledomain.co.uk
Redirect permanent / http://www.exampledomain.co.uk/
</VirtualHost>
服务器名称和别名的定义与此处显示的顺序相反(Apache 在更改之间重新启动),并且稍后添加了“永久重定向”的第二个 vhosts 条目,全部无效。
什么可能导致这种行为?还有什么我应该检查的吗?搜索了这么多材料以找到解决方案,但看不到任何错误或缺失。任何帮助将不胜感激!
【问题讨论】:
【参考方案1】:Options -Indexes
Options +FollowSymLinks
RewriteEngine on
RewriteCond %HTTP_HOST ^example.com [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]
【讨论】:
谢谢,尝试了你的重写规则,但没有效果。似乎和我已经拥有的一样,虽然不是 https 敏感的。【参考方案2】:今天我注意到,在之前的测试服务器实例中,/etc/apache2/sites-enabled/ 中有另一个 vhosts 配置文件,该文件被留下并命名为 example.co.uk .conf - 主 exampledomain.co.uk.conf 文件指向的站点的目录名称是 /home/exampleuser/public/example .co.uk/public_html 所以我检查了里面,文件包含一个空的 vhosts 声明:
<VirtualHost *:80>
</VirtualHost>
当这个<VirtualHost>
部分被用哈希注释掉或被删除,或者 conf 文件被重命名为 example.co.uk.conf 以外的东西时,非 www。然后请求被路由到正确的 Web 根目录,就像使用 www.请求并解决了问题。
但是,我不清楚为什么选择此 example.co.uk.conf 来处理对 exampledomain.co.uk 的请求而不是对 www.exampledomain.co.uk,所以如果有人可以扩展这个答案,请编辑或评论。谢谢!
【讨论】:
以上是关于非万维网。域未重定向到 www。领域的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot 应用程序未重定向到托管在不同服务器上的 Keycloak