2016-07-19 17 views
1

.htaccessの設定に問題があります。 http://www.domain.com/b/en/index.php、と私はかなりのURLを作成するためにmod_rewriteを使用します: 私のウェブサイトのホームページのURLは、かなりだ古いURLをきれいなURLに書き換え、古いURLを.htaccessで新しいURLにリダイレクト

RewriteRule ^en/(.*)$ /b/$1 [L,QSA,NC,PT] 

は私が何をしたいのURL:これはかなりのURL(それが動作する)のための私の書き換えルールをです​​

をしかし、「古いURL」を新しいURLにリダイレクトすると、いくつかの問題があります。

私のChromeブラウザは「www.domain.com redirected you too many times.

これは私の古いURLが新しいルールにリダイレクトする例を示します

RewriteRule ^b/en/(.*)$ /en/$1 [NC,L,R=301] 
+0

は 'PT'フラグを使用しないでください。 – hjpotter92

答えて

0

これは、一般的な2部構成の問題です。あなたは1きれいに生の要求をリダイレクトする必要があります:

RewriteRule ^en/(.*)$ /b/en/$1 [L,QSA,NC] 

RewriteCond %{THE_REQUEST} ^GET\ /b/(en)/(\S*) [NC] 
RewriteRule ^b/ /%1/%2 [R=301,L] 

は、新しいルールをテストする前に、あなたのブラウザのキャッシュをクリアしてください。

+0

それは動作します!ご協力ありがとうございます。 – evenloooo

0

私はより汎用的なユースケースを持っていましたので、@ hjpotter92のソリューションを少し修正しなければなりませんでした。

旧URL構造:http://example.com/index.php?page=foo
新しいURL構造:http://example.com/foo

は、だから私は(つまり、SEOフレンドリー)「かわいい」のURLを作りたかっただけでなく、古い(醜い)のURLを新しいURLにリダイレクトしています古いブックマークはまだ機能します。

は、ここに私のソリューションです:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-l 
RewriteRule ^/?(.*)$ /index.php?page=$1 [L,QSA,NC] 

RewriteCond %{THE_REQUEST} ^GET\ \/?index\.php\?page=(\S*) [NC] 
RewriteRule ^index.php /%1? [R=301,L] 
関連する問題