2013-11-21 55 views
2

我已經通過大量的文檔,但無法找到正確的規則在這種情況下。htaccess重寫參數單頁+ iframe

我有一個index.php文件,包含一個iframe.php文件。

有3個可選參數,儘管如果沒有指定前兩個參數都有默認值。參數傳遞給iframe。

所以我

domain.com/?lang=en&country=us&game=myId 

IFrame,這是該指數中調用,像這樣:

<iframe src="iframe.php?lang=en&country=us&game=myId"> 

我想的URL改寫爲:

domain.com/en-us/myId 

不搞亂up iframe參數。

如果頁面被稱爲無語言參數,默認值是在iframe中仍設置,調用

domain.com 

<iframe src="iframe.php?lang=en&country=us"> 

在這種情況下我也就像顯示的主要網址

domain.com/en-us 

回答

2

嘗試在htaccess文件這樣的事情在你的文檔根:

RewriteEngine On 

RewriteRule ^$ /en-us [L,R=301] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([a-z]{2})-([a-z]{2})(?:/(.*)|)$ /iframe.php?lang=$1&country=$2&game=$3 [L,QSA] 

然後你需要確保你正在構建你的網址,如:

domain.com/en-us/myId 

,而不是使用查詢字符串。

如果您訪問使用查詢字符串的網頁時,需要重定向瀏覽器,包括:

RewriteCond %{THE_REQUEST} \ /iframe.php\?lang=([a-z]{2})&country=([a-z]{2})(?:&([^&\ ]+))($|&|\) 
RewriteRule^/%1-%2/%3 [L,R=301] 

要爲2點3的參數創建單獨的規則:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([a-z]{2})-([a-z]{2})/(.+)$ /iframe.php?lang=$1&country=$2&game=$3 [L,QSA] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([a-z]{2})-([a-z]{2})/?$ /iframe.php?lang=$1&country=$2 [L,QSA] 
+0

非常感謝,你的第一個例子完美適用於2個第一個參數,但不適用於最後一個參數。看起來像添加了即使參數不存在(iframe被稱爲whith?lang = XX&country = XX&game =)。 – kursus

+0

@ kursus它不是這樣,或者你需要爲每個參數創建一個規則,一個爲2個參數,一個爲3個參數 –

+0

現在好了,這是有道理的。最後一件事情是,當語言參數(domain.com/en-us/)後面添加了尾部斜線時,它似乎不起作用,從而使遊戲參數無法正常工作。這是規則還是我的代碼? – kursus