我正在尝试使用mod_rewrite重定向我的域名,但我遇到了一些问题。
我想重定向以下请求:
mydomain.tld [redirect to] www.mydomain.tld
mydomain.tld/xxx.html [redirect to] www.mydomain.tld/xxx.html
mydomain.tld/categorie [redirect to] www.mydomain.tld/categorie
因此,域名前没有www的所有请求都必须重定向到www.mydomain.tld /...
我的特殊功能必须是 - 无论请求是http还是https:
https://mydomain.tld [redirect to] https://www.mydomain.tld
https://mydomain.tld/xxx.html [redirect to] https://www.mydomain.tld/xxx.html
https://mydomain.tld/categorie [redirect to] https://www.mydomain.tld/categorie
这是我已经尝试过的:
RewriteCond %{HTTP_HOST} ^mydomain.tld\.de$ [NC]
RewriteRule ^(.*)$ http://www.mydomain.tld/$1 [R=301,L]
但现在我不知道如何重定向https请求。 当你能帮助我时会很棒。 感谢
修改
以下解决方案对我来说很好,但是可以使它更容易或组合2个块的前2行吗?
RewriteCond %{HTTP_HOST} ^mydomain\.tld$ [NC]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ http://www.mydomain.tld/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^mydomain\.tld$ [NC]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTPS} on
RewriteRule ^(.*)$ https://www.mydomain.tld/$1 [R=301,L]
答案 0 :(得分:1)
在阅读mod_rewrite docs之后,我很想使用%{REQUEST_SCHEME},但这不可靠。
但我们可以像这样定义一个等价物:
# Prepare our REQUEST_SCHEME workaround, use with %{ENV:REQUEST_SCHEME}
RewriteCond %{HTTPS} off
RewriteRule .* - [E=REQUEST_SCHEME:http]
RewriteCond %{HTTPS} on
RewriteRule .* - [E=REQUEST_SCHEME:https]
# Redirect mydomain.tld to www.mydomain.tld preserving http[s] scheme
RewriteCond %{HTTP_HOST} ^mydomain\.tld$ [NC]
RewriteRule ^(.*)$ %{ENV:REQUEST_SCHEME}://www.mydomain.tld/$1 [R=301,L]
答案 1 :(得分:0)
试试这个:
RewriteCond %{HTTPS} ^on$
RewriteRule (.*) https://www.mydomain.com/$1 [R,L]
答案 2 :(得分:0)
增强针对CloudFlare用户的建议:
RewriteEngine on
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP:CF-Visitor} '"scheme":"http"'
RewriteRule .* - [E=REQUEST_SCHEME:http]
RewriteCond %{HTTPS} on [OR]
RewriteCond %{HTTP:CF-Visitor} '"scheme":"https"'
RewriteRule .* - [E=REQUEST_SCHEME:https]
答案 3 :(得分:0)
OK?
RewriteCond %{ENV:HTTPS} on
RewriteRule .* - [E=SSL:s]
RewriteCond %{HTTP_HOST} !^www\.(.*) [NC]
RewriteRule ^(.*)$ http%{ENV:SSL}://www.%{HTTP_HOST}/$1 [R=301,L]