2013-10-22 79 views
1

我想通過(不定向)是這樣的:使用htaccess的傳遞目錄GET參數無需重寫URL

http://www.example.com/ 傳遞給腳本 http://www.example.com/index.php

http://www.example.com/foo/(使用/可選)(與/可選) 傳遞給腳本傳遞到腳本 http://www.example.com/index.php?nav=foo

http://www.example.com/foo/bar(有/可選) http://www.example.com/index.php?nav=foo&subnav=bar

此外,我想通過子域http://testumgebung.example.comhttp://www.example.com/testumgebung.php與上述相同的參數。

我只是設法做到以下幾點,但它重寫URL在瀏覽器欄傳遞的位置,並沒有離開網址爲前:

RewriteCond %{HTTP_HOST} ^testumgebung\.maskesuhren\.de 
RewriteRule ^(.*)$ http://www.maskesuhren.de/$1/testumgebung.html [L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} ^/[^/]+/?$ 
RewriteRule ^([^/]*)/?$ index.html?nav=$1 [R,L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} /.*/.* 
RewriteRule ^([^/]*)/([^/]*)$ index.html?nav=$1&subnav=$2 [R,L] 

回答

2

你想擺脫R的在過去的2個規則:

RewriteCond %{HTTP_HOST} ^testumgebung\.maskesuhren\.de 
RewriteRule ^(.*)$ http://www.maskesuhren.de/$1/testumgebung.html [L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} ^/[^/]+/?$ 
RewriteRule ^([^/]*)/?$ index.html?nav=$1 [L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} /.*/.* 
RewriteRule ^([^/]*)/([^/]*)$ index.html?nav=$1&subnav=$2 [L] 

在方括號中的R告訴mod_rewrite的將瀏覽器重定向,從而改變在瀏覽器的地址欄中的網址。 。

+0

你是對的,但我必須處理不在example.com/foo/bar/js/bla.js但是在example.com/js/bla.js的外部資源。任何解決方案來規避這個問題?我的另一個問題是,子域testumgebung被重定向到http://www.maskesuhren.de/testumgebung.html,但我想保留在testumgebung.maskesuhren.de。 Thx爲你的幫助到目前爲止。 – velop

1

我不得不改變次序才達到我想要的東西

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} ^/[^/]+/?$ 
RewriteRule ^([^/]*)/?$ ?nav=$1 [R,L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} /.*/.* 
RewriteRule ^([^/]*)/([^/]*)$ ?nav=$1&subnav=$2 [R,L] 

RewriteCond %{HTTP_HOST} ^testumgebung\. [NC] 
RewriteRule ^$ testumgebung.html [L] 

,並改寫HTML,這樣的外部資源開始用斜槓。