非万维网。域未重定向到 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>

当这个&lt;VirtualHost&gt; 部分被用哈希注释掉或被删除,或者 conf 文件被重命名为 example.co.uk.conf 以外的东西时,非 www。然后请求被路由到正确的 Web 根目录,就像使用 www.请求并解决了问题。

但是,我不清楚为什么选择此 example.co.uk.conf 来处理对 exampledomain.co.uk 的请求而不是对 www.exampledomain.co.uk,所以如果有人可以扩展这个答案,请编辑或评论。谢谢!

【讨论】:

以上是关于非万维网。域未重定向到 www。领域的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot 应用程序未重定向到托管在不同服务器上的 Keycloak

万维网WWW

Paypal:Angular Js paypal 按钮未重定向到付款页面

计算机网络——应用层之万维网(WWW)

总结html

使用 IPN 方法的 Paypal 付款在付款后未重定向