2011-02-10 105 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