2011-02-10 107 views
0

我現在.htacess看起來是這樣的:的.htaccess改寫爲清潔的網址W/2 GET變量

RewriteEngine On 
RewriteRule ^([a-zA-Z0-9-z\-]+)$ index.php?page=$1 
RewriteRule ^([a-zA-Z0-9-z\-]+)/$ index.php?page=$1 

,讓我拿AA等環節

http://www/myserver.com/somepage 

,它改寫成

http://www.myserver.com/?page=somepage. 

但我如何讓它變得更深?我希望能夠做到:

http://www.myserver.com/somepage/subpage 

,並把它變成

http://www.myserver.com/?page=somepage&subpage=subpage 

感謝

回答

2

添加額外的捕獲組以下規則第二個參數

RewriteRule ^([a-zA-Z0-9-z\-]+)/([a-zA-Z0-9-z\-]+)$ index.php?page=$1&subpage=$2 
RewriteRule ^([a-zA-Z0-9-z\-]+)/([a-zA-Z0-9-z\-]+)/$ index.php?page=$1&subpage=$2 
0

如果您有可能抓住沒有子頁面的鏈接,那麼您需要抓住該子頁面第一條規則的頁面。然後你可以抓住其餘的併發送到頁面。

RewriteEngine On 
# catch potential subpages first 
RewriteRule ^([a-zA-Z0-9-z\-]+)/([a-zA-Z0-9-z\-]+)/?$ index.php?page=$1&subpage=$2 [L] 
#combines your original rule to allow for optional end slash 
RewriteRule ^([a-zA-Z0-9-z\-]+)/?$ index.php?page=$1 [L] 

您可以將它們組合成一個規則,但它可能會生成一個空子頁面的查詢。我喜歡清潔內部查詢,但爲了討論:

RewriteEngine On 
# One rule to rule them all 
RewriteRule ^([a-zA-Z0-9-z\-]+)(/([a-zA-Z0-9-z\-]+))?/?$ index.php?page=$1&subpage=$3 [L] 

編輯:扔在此鏈接到一個rewrite tester。很有用。雖然,當我測試我的規則時,它提出了原始[]分組的問題。什麼是最終的?

0
RewriteEngine On 
RewriteRule ^([a-zA-Z0-9-z\-\_]+)$ index.php?page=$1 
RewriteRule ^([a-zA-Z0-9-z\-\_]+)/$ index.php?page=$1 
RewriteRule ^([a-zA-Z0-9-z\-\_]+)/([a-zA-Z0-9-z\-\_]+)$ index.php?page=$1&id=$2 
RewriteRule ^([a-zA-Z0-9-z\-\_]+)/([a-zA-Z0-9-z\-\_]+)/$ index.php?page=$1&id=$2 
RewriteRule ^([a-zA-Z0-9-z\-\_]+)/([a-zA-Z0-9-z\-\_]+)/([a-zA-Z0-9-z\-\_]+)$ index.php?page=$1&id=$2&value=$3 
RewriteRule ^([a-zA-Z0-9-z\-\_]+)/([a-zA-Z0-9-z\-\_]+)/([a-zA-Z0-9-z\-\_]+)/$ index.php?page=$1&id=$2&value=$3