2012-05-30 90 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個更簡單的規則(如上所述)。