2015-04-05 69 views
2

所以我想做一個mod_rewrite的在我的.htaccess文件,這樣下瀏覽器請求:mod_rewrite的查詢字符串參數爲空

www.mysite.com/portal/v1/v2/v3 

...將被改寫,並在PHP處理爲這樣:

www.mysite.com/portal.php?n1=v1&n2=v2&n3=v3 

這裏需要說明的是,一些或所有這些GET變量可以是空白,這意味着瀏覽器請求可以採用以下任一形式:

www.mysite.com/portal/v1/v2/v3 
www.mysite.com/portal/v1/v2 
www.mysite.com/portal/v1 
www.mysite.com/portal 

我可以在php文件中對事物進行分類,但是我應該使用什麼代碼來處理.htaccess?謝謝!

回答

0

/.htaccess

RewriteEngine on 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 

RewriteRule ^(.*)/(.*)/(.*)/?$ /portal.php?n1=$1&n2=$2&n3=$3 [QSA,L,NC] 

的RewriteCond試試這個保證,如果該請求已經是一個文件或目錄重寫規則將被跳過。

$1$2$3指的是在RewriteRule內匹配的模式。

0

您可以在DOCUMENT_ROOT/.htaccess文件中使用此代碼:

RewriteEngine On 
RewriteBase/

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

RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ portal.php?n1=$1&n2=$2&n3=$3 [QSA,L] 

RewriteRule ^([^/]+)/([^/]+)/?$ portal.php?n1=$1&n2=$2 [QSA,L] 

RewriteRule ^([^/]+)/?$ portal.php?n1=$1 [QSA,L] 

RewriteRule ^/?$ portal.php [L]