2016-10-19 10 views
1

私は私の.htaccessファイルに次きwwwを付けずにリダイレクトし、最後にスラッシュを追加しますか?

RewriteEngine On 
RewriteCond %{REQUEST_URI} ^www.mysite.com [NC] 
RewriteCond %{REQUEST_URI} !\.[^./]+$ 
RewriteCond %{REQUEST_URI} !(.*)/$ 
RewriteRule ^(.*)$ mysite.com/$1/ [R=301,L] 

私はそれが無いWWWですべてのURLをリダイレクトし、また、すべての回でURLの末尾にスラッシュを追加するために取得しようとしています。

wwwを使わずに直接試してみるとうまくいきますが、wwwで試してみると失敗し、それを削除せず、末尾にスラッシュを追加しません。

答えて

1

あるべきwwwを削除し、末尾のスラッシュを追加するための単一のルールです:

RewriteEngine On 

RewriteCond %{HTTP_HOST} ^www\. [NC,OR] 
RewriteCond %{REQUEST_URI} !/$ 
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC] 
RewriteRule ^(.*?)/?$ http://%1/$1/ [R=301,L,NE] 

これもルールにドメイン名をハードコーディング避けることができます。

+1

これは最高の働きをしました、ありがとうございます! –

1

これらの2つのルールを使用して、すべての時間を強制することができます。さらに、最初の状態で構文エラーがあります。それはここでHTTP_HOSTないREQUEST_URI

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^www\.example\.com [NC] 
RewriteCond %{REQUEST_URI} !(.*)/$ 
RewriteRule ^(.*)$ http://example.com/$1/ [R=301,L] 

RewriteCond %{REQUEST_URI} !(.*)/$ 
RewriteRule ^(.*)$ http://example.com/$1/ [R=301,L] 
+0

ありがとうございますが、wwwを使用してサイトにヒットした場合でも、wwwを読み込み、それを削除しません。 –

+0

@CodingGuruの後ろにスラッシュを付けるかどうかを指定しますか? –

+0

最後にスラッシュが付きます。 –

関連する問題