2

これは比較的標準的な質問ですが、既に書き換えが行われている URL では機能しないようです。

たとえば、次の URL があります。

http://example.com/this-is-rewritten/
https://example.com/this-is-rewritten/

次の場所に移動する必要があります。

http://www.example.com/this-is-rewritten/
https://www.example.com/this-is-rewritten/

サブドメインの URL でない場合は、常に WWW が先頭になるようにしたいと考えています。したがって、次の場合:

http://subdomain.example.com/this-is-rewritten/

それはWWWに行くべきではありません。これは私がこれまでに持っているものですが、同じ "/this-is-rewritten/" URL ではなく、クエリ文字列を含む下にある URL に送信されます。また、http または https を保持する必要があります。

RewriteCond %{HTTPS} (on)?
RewriteCond %{HTTP:Host} ^(?:www.)(.+)$ [NC]
RewriteCond %{REQUEST_URI} (.+)
RewriteRule .? http(?%1s)://%2%3 [R=301,L]
4

2 に答える 2

1

試す:

RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^([^.]+)\.([a-z]+)$
RewriteRule ^(.*)$ http://www.%1.%2/$1 [L,R=301]

RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} ^([^.]+)\.([a-z]+)$
RewriteRule ^(.*)$ https://www.%1.%2/$1 [L,R=301]

または、特定のホストしかない場合:

RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteCond %{HTTPS}s (?:on(s)|off(s))
RewriteRule ^(.*)$ http%1://www.example.com/$1 [L,R=301]  
于 2013-12-18T01:43:54.347 に答える