2014-11-22 35 views
0

我寫了這一小段代碼。我對此很新,所以我不確定這是否正確。但基本上它讓我用php擴展訪問url。當人們在網站上,他們正在從地理IP頁面重定向到喜歡看起來像這樣的.htaccess國防部重寫幫助需要

main.php?LANG =英國或荷蘭或EN或歐盟等

現在正確的語言我也可以使用它像這樣

主/?LANG =英國或荷蘭或EN或歐盟等

我希望能夠還去除的網址是什麼?LANG =英國變量。

我會怎麼做。我的.htaccess代碼低於

<IfModule mod_rewrite.c> 

RewriteEngine On 
RewriteBase/
DirectorySlash On 

RewriteCond %{HTTPS} !=on 
RewriteRule ^(.*)$ https://%{SERVER_NAME}/$1 [R=301,L] 

# remove trailing slash 
RewriteRule ^(.*)\/(\?.*)?$ $1$2 [R=301,L] 
RewriteRule ^([\w\/-]+)(\?.*)?$ $1.php$2 [L,T=application/x-httpd-php] 



</IfModule> 

感謝任何人願意幫忙。

+0

我做了一個小錯誤,我只是看看。 main /?lang = uk不起作用,仍然需要main.php?lang = uk。所以總的來說,它應該刪除main.php文件中的.php?lang = uk。 – carlosx2 2014-11-22 18:34:51

+0

這正是餅乾的用途。 – Sumurai8 2014-11-23 06:52:00

回答

0

RewriteRule第一個參數不匹配的域名和前綴*後,如果存在任何查詢字符串的事情之前。在http://localhost/this/is/my/test?lang=123與在this/is/目錄.htaccess文件,將匹配my/test。要匹配的查詢字符串,你必須使用%{QUERY_STRING}變量。

如果RewriteRule的第二個參數(重寫的url)不包含查詢字符串,它會自動將原始url的查詢字符串追加到新的url。

在下面的代碼我使用%{THE_REQUEST}。這是用於提出頁面請求的字符串。它的形式是GET /my/resource?query=string HTTP/1.1。重寫事物時不會改變,這可以防止無限循環。

在你的PHP文件,確保該語言從cookie而不是一個GET變量讀取,然後執行以下操作:

#Set cookie for language 
RewriteCond %{QUERY_STRING} ^(.*?)&?lang=([^&]+)&?(.*?)$ 
RewriteRule^%{REQUEST_URI}?%1&%3 [CO=lang:%2:127.0.0.1:1:/:0:1,R,L] 

#Remove potential prefix or suffix & from query string 
RewriteCond %{QUERY_STRING} ^&(.*?)$ [OR] 
RewriteCond %{QUERY_STRING} ^(.*?)&$ 
RewriteRule^%{REQUEST_URI}?%1 [R,L] 

#External requests with \.php should be without that. 
RewriteCond %{THE_REQUEST} \.php 
RewriteRule ^(.*)\.php$ $1 [R=301,L] 

#Try to load php page if resource does not alreay have an extension 
RewriteCond %{REQUEST_URI} !\.[a-z]+$ 
RewriteRule ^(.*)$ $1.php [L]