使用 mod rewrite、VirtualHost 和/或 Directory 将 www 重定向到 https 站点



这是我在StackOverflow上的第一篇文章,所以请耐心等待......

我正在尝试将 www.example.com 重定向到 https://example.com。 我已经在StackOverflow和其他论坛网站上查看了相当多的解决方案,但我似乎无法获得任何工作。 以下是我看过的其他一些StackOverflow页面:

通用 htaccess 重定向 www 到非 www

Apache 从非 www 重定向到 www

将非 WWW 重定向到 www

我的 SSL 证书同时列出了 example.com 和 www.example.com。 这是我的apache2.conf文件中的代码,我一直在尝试添加重定向:

<Directory /home/tim/examplepath>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ sort-url.php?rt=$1
</Directory>
<VirtualHost XXX.XXX.XX.XXX:12345>
    ServerName example.com
    Redirect / https://example.com/ 
</VirtualHost>
<VirtualHost XXX.XXX.XX.XXX:80>
   ServerName example.com
   Redirect / https://example.com/
</VirtualHost>
<VirtualHost XXX.XXX.XX.XXX:123>
   ServerName example.com
   DocumentRoot /home/tim/examplepath/
   SSLEngine on
   SSLCertificateFile /etc/ssl/certs/example.com.crt
   SSLCertificateKeyFile /etc/ssl/certs/example.key
   SSLCertificateChainFile /etc/ssl/certs/sf_bundle.crt
</VirtualHost>

我希望所有内容都重定向到 https://example.com/sort-url.php?rt=$1 然后我可以根据变量 $1 确定要显示的页面。

有人可以告诉我我需要做什么吗? 服务器别名 和 301 重定向内部对我不起作用。

提前谢谢你!

提姆

欢迎来到 SO!

如果您希望所有内容都example.com结束,您可以将其设为_默认_站点。我认为你可以这样做:

<VirtualHost _default_:*>
   Redirect permanent / https://example.com
</VirtualHost>
<VirtualHost XXX.XXX.XX.XXX:123>
   ServerName example.com
   DocumentRoot /home/tim/examplepath/
   SSLEngine on
   SSLCertificateFile /etc/ssl/certs/example.com.crt
   SSLCertificateKeyFile /etc/ssl/certs/example.key
   SSLCertificateChainFile /etc/ssl/certs/sf_bundle.crt
   RewriteEngine On
   RewriteBase /
   # Check is HTTPS is used
   RewriteCond %{HTTPS} =off
   RewriteRule ^(.*)$ https://example.com/sort-url.php?rt=$1 [R=301,L]
   # If we have not specified a file to access, redirect to sort-url.php
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteRule ^(.*)$ sort-url.php?rt=$1
</VirtualHost>

必须承认这是未经测试的,我有点不确定您是否需要为重定向到 SSL 的非 SSL 连接提供VirtualHost

编辑
已更改,以便默认主机仅转发到https://example.com以确保使用正确的主机名。

我不得不在我的Rackspace帐户上的DNS记录中添加一个CNAME。 别名记录是"www.highschoolclothing.com"。

谢谢大家的帮助!

最新更新