2015-11-06 78 views
1

我想我的網頁重定向在以下幾個方面:的.htaccess重定向無法正常

www.example.com/index.cfm?locale=it -> www.example.com/it 

,我想訪問同一頁面時,I型:

www.example.com/it 

我寫的htaccess文件,但它會導致重定向循環。這裏是文件:

<IfModule mod_rewrite.c> 
Options +FollowSymLinks 
RewriteEngine On 
RewriteBase/
#REWRITE RULES 
#--------------------- 

RewriteCond %{QUERY_STRING} ^locale=(it|en|fr|de|es)$ 
RewriteRule ^index\.cfm$ %1? [R=302,L] 

RewriteCond %{REQUEST_URI} !^index\.cfm 
RewriteRule ^(it|en|fr|de|es)/?$ index.cfm?locale=$1 [L] 

</IfModule> 

你能幫我解決它嗎? 謝謝!

回答

0

,您可以嘗試這種方式。

RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
Rewrite^- [L] 

RewriteCond %{THE_REQUEST} ^GET\ /index\.cfm\?locale=(it|en|fr|de|es) 
RewriteRule^%1? [R=302,L] 

RewriteRule ^(it|en|fr|de|es)/?$ index.cfm?locale=$1 [L] 
+0

我試過了,但不能從www.example.com/index.cfm?locale=it - > www.example.com/it轉換。無論如何,它都可以在www.example.com/it中使用。其他想法? –

+0

這是一個302所以它不應該緩存,但嘗試並清除緩存無論如何 –

+0

對不起,但它沒有奏效。 www.example.com/index.cfm?locale=it沒有成爲www.example.com/it,因爲我願意。 –

0

試試這個:

//Rewrite to www 
Options +FollowSymLinks 
RewriteEngine on 
RewriteCond %{HTTP_HOST} ^example.com/it[nc] 
RewriteRule ^(.*)$ http://www.example.com/it/$1 [r=301,nc] 

//301 Redirect Old File 
Redirect 301 www.example.com/index.php?locale=it www.example.com/it 

//301 Redirect Entire Directory 
RedirectMatch 301 www.example.com/index.php?locale=it(.*) www.example.com/it/$1 
+0

我必須重定向dinamically。我需要使用%{QUERY_STRING}來解決我的問題。您如何從我的代碼中看到我想重定向到其他語言。 –