这是我在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"。
谢谢大家的帮助!