2012-05-30 51 views
0

我改变的.htaccess漂亮的url问题

mydomain.com/directory/?name=lorem&action=posts 

mydomain.com/directory/lorem/posts 

但现在我想添加一个名为 “其他”

,所以我希望得到

mydomain.com/directory/?name=lorem&action=posts&other=38291389 

mydomain.com/directory/lorem/post/38291389 

这是我使用的第一个例子

RewriteEngine On 
RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteCond %{SCRIPT_FILENAME} !-f 

RewriteRule ^(\w+)(/(\w+))?$ /directory/?name=$1&action=$3 

这里是一个我试图让第二个例子中的.htaccess代码,但它不工作

RewriteEngine On 
RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteCond %{SCRIPT_FILENAME} !-f 

RewriteRule ^(\w+)(/(\w+))?$ /directory/?name=$1&action=$3&other=$4 

可能有人帮助我得到这个工作?

回答

1

保持简单:

RewriteEngine On 
RewriteCond %{SCRIPT_FILENAME} -d [OR] 
RewriteCond %{SCRIPT_FILENAME} -f [OR] 
RewriteRule .* - [L] 

RewriteRule ^(\w+)/(\w+)/(\w+)/?$ /directory/?name=$1&action=$2&other=$3 
RewriteRule ^(\w+)/(\w+)/?$ /directory/?name=$1&action=$2 
RewriteRule ^(\w+)/?$ /directory/?name=$1 

有多种效果在一个单一的正则表达式组合(虽然它是聪明,让你感觉良好),但是当正则表达式引擎工作,聪明的没有真正的收获正则表达式可能需要更多时间才能匹配比2或3个更简单的规则(如上所述)。