2013-10-29 48 views
1

我想在我的php網站上添加一個'簡單'可翻譯的框架。我有法語和英語,未來可能會更多。雙向URL rewrting

我可以很容易地從的.htaccess重定向到一個不同的語言,這些規則:

RewriteRule ^Abonnement$ php/vigneron/inscription.php?la=fr [L,QSA] 
RewriteRule ^Register$ php/vigneron/inscription.php?la=en [L,QSA] 

我的問題是:如果我不希望建立在PHP連接Abonnement陣列(法語頁面)註冊(簡單:)英文頁面),我必須在我的語言選擇框中輸入醜陋的URL:php/vigneron/inscription.php?la = XX,並且該URL在瀏覽器的地址欄中可見

所以我的問題是:有沒有辦法在.htaccess鏈接php/vigneron/inscription.php?la = en到Register? 我錯過了我的.htaccess文件中的內容嗎? 我的恐懼是從乾淨的URL到真實的路徑文件進行無限循環。

第二個問題非常接近第一個問題:頁面仍然可以使用長URL:php/vigneron/inscription.php?la = en,是否有辦法阻止這種情況並通過.htaccess強制瀏覽器顯示乾淨網址?

感謝您的意見和評論!

回答

1

So my question is : is there a way in .htaccess to link php/vigneron/inscription.php?la=en to Register ?

是肯定是可以做到的。爲此目的使用這些規則:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+php/vigneron/inscription\.php\?la=en[&\s] [NC] 
RewriteRule^/register? [R=301,L] 

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+php/vigneron/inscription\.php\?la=fr[&\s] [NC] 
RewriteRule^/Abonnement? [R=301,L] 
+0

我真的不知道如何感謝你,除非說你是.htaccess殺手!試圖理解這個規則的邏輯:它是否意味着「[&s]」會通過所有其他的aguments,並且「^ [A-Z] {3,} \ s /」處理www + domaine的名字? – hugsbrugs

+0

不客氣。 '[A-Z] {3,}'表示ex的請求方法。 GET,POST,PUT等等,'[&\ s]'會匹配一個空格或'&'。這意味着參數'la = en'是最後一個參數或者後面有更多參數。 – anubhava