2

I currently use the following code for my htaccess file. It redirects to https://www.example.com

#if not forum.example.com and not ssl then redirect
RewriteCond %{HTTP_HOST} !^forum\. 
RewriteCond %{SERVER_PORT} !443
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R,L]

#redirect if https://forum.example.com
RewriteCond %{HTTP_HOST} ^forum\.
RewriteCond %{SERVER_PORT} 443
RewriteRule ^(.*)$ http://forum.%{HTTP_HOST}/$1 [R,L]

The problem I have is when I go to

http://www.example.com

, this code makes it redirect to

https://www.www.example.com 

instead of

https://www.example.com.

Anyone know how I can fix this?

If you require additional information to assist, just let me know.

4

1 に答える 1

1

最初の書き換えルールは、2つの負の条件が満たされた場合に実行されます。NotforumとnotSSLですが、書き換えは、すでにURLに含まれている場合でも、常にwwwを挿入します。以前はチェックされていません。

最初の置換からwwwを削除することを除いて、実際のルールを変更せずに問題を修正する最善の方法は、次のように最初に別のルールを追加することです。

#non-www to www
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example\.com/?$ 
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]

#if not forum.example.com and not ssl then redirect
RewriteCond %{HTTP_HOST} !^forum\. 
RewriteCond %{SERVER_PORT} !443
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R,L] 

#redirect if https://forum.example.com
RewriteCond %{HTTP_HOST} ^forum\.
RewriteCond %{SERVER_PORT} 443
RewriteRule ^(.*)$ http://forum.%{HTTP_HOST}/$1 [R,L]

www追加されたルールは、URLを.なしで書き換えることwwwです。結果のURLは、他のルールに表示されます。

これらの最後の2つのルールが意図したとおりに機能するかどうかはわかりませんが、機能すると思います。質問のwww重複の問題 を解決しようとしています。

お役に立てれば。

于 2012-12-04T05:31:42.157 に答える