使用虚拟主机将不存在的页面重定向到主页,并将 example.org 重定向到 .htaccess 中的 www.example.org

redirecting non existed page to home page and example.org to www.example.org in .htaccess with virtual hosting

我正在 Ubuntu apache2 上测试一些东西。我能够解决个别问题,但是当这些问题结合起来时,它就搞砸了,并显示“这个网页有一个重定向循环”。好的..这是设置。 我的站点是 www.example.org 和子文件夹 www.example.org/kmc。在子文件夹中,我们安装了 Joomla CMS。

在 .htaccess 文件中,我做了两个设置。

1) example.org 将转发给 www.example.org

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)S http://%{HTTP_HOST}/ [R=301,L]

有效。

2) 不存在的页面将被转发到首页。

ErrorDocument 404 http://www.example.org

它也有效。

现在我在 000-default.conf 文件中设置虚拟主机。原因是我想在同一台服务器上有两个不同的站点。

<VirtualHost *:80>
    DocumentRoot /var/www/html/kmc
    ServerName www.example.org
</VirtualHost>

现在当我转到 example.org 时,浏览器显示 "This Webpage has a Redirect Loop"。

你的 www 规则应该是这样的:

RewriteEngine On

RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NE]

目标 URL 中缺少您的规则 www.