0

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]
4

4 に答える 4

1

mod_rewrite ドキュメントを読んだ後、%{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]
于 2014-06-03T19:19:54.667 に答える
0

これを試して:

RewriteCond %{HTTPS} ^on$
RewriteRule (.*) https://www.mydomain.com/$1 [R,L]
于 2013-07-29T13:33:24.103 に答える
0

わかった?

RewriteCond %{ENV:HTTPS} on
RewriteRule .* - [E=SSL:s]
RewriteCond %{HTTP_HOST} !^www\.(.*) [NC]
RewriteRule ^(.*)$ http%{ENV:SSL}://www.%{HTTP_HOST}/$1 [R=301,L]
于 2017-07-14T13:09:48.667 に答える