我在httpd.conf
中使用以下代码进行重定向:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.domain.com$ [NC]
RewriteRule ^(.*)$ http://domain.com/$1 [R=301,L]
但是,它最终会重定向到www.domain.com/domain.com//domain.com//domain.com
我希望以下所有网址都重定向到domain.com:
http://domain.com
http://www.domain.com
www.domain.com
答案 0 :(得分:9)
这应该这样做。问题是它看起来非常像你已经拥有的。在浏览器中键入http://domain.com
时,它是否有效?或者它是否重定向到其他地方?
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.domain\.com
RewriteRule ^(.*)$ http://domain.com$1 [R=permanent,L]
答案 1 :(得分:1)
http://www.webweaver.nu/html-tips/web-redirection.shtml建议
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} !^example\.com
RewriteRule (.*) http://example.com/$1 [R=301,L]
答案 2 :(得分:1)
RewriteEngine On
# Redirect ANY non-www request to https and www
RewriteCond %{HTTP_HOST} !^(www.\.domain\.com)?$
RewriteRule (.*) https://www.domain.com/$1 [R=301,L]
# Redirect ANY HTTP request to https and www
RewriteCond %{SERVER_PORT} !443
RewriteRule (.*) https://www.domain.com/$1 [R=301,L]
答案 3 :(得分:0)
对于SSL虚拟主机,请使用以下内容:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.yourdomain\.com
RewriteRule ^(.*)$ https://yourdomain.com$1 [R=301,L]
下面的完整示例:
<VirtualHost *:443>
ServerAdmin youname@yourdomain.com
DocumentRoot "/var/www/html/yourdomain"
ServerName yourdomain.com
ServerAlias www.yourdomain.com *.yourdomain.com
ErrorLog "logs/yourdomain-error_log"
CustomLog "logs/yourdomain-access_log" common
ErrorDocument 404 /index.php
<Directory "/var/www/html/yourdomain">
Options FollowSymLinks
AllowOverride All
Order deny,allow
Allow from all
</Directory>
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/yourdomain/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/yourdomain/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/yourdomain/chain.pem
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.yourdomain\.com
RewriteRule ^(.*)$ https://yourdomain.com$1 [R=301,L]
</VirtualHost>