2011-03-24 118 views
1

這是我的htaccess的一部分:簡單htaccess的重定向

RewriteRule ^post/(.*)$ post.php?name=$1 
RewriteRule ^(.*)/$ cat.php?name=$1 

的URI不會停這樣的:

www.domain.com/category-name/ 
www.domain.com/post/hello-world 

正如你看到的,在第一個地址(類別)的盡頭有是'/',第二個沒有'/',我怎麼能在第二個地址上做呢?如果我會做這樣的事情:

RewriteRule ^post/(.*)/$ post.php?name=$1 

它不會工作,因爲服務器'認爲'我的意思是類別地址。希望你明白謝謝你。

回答

3

在每個規則上使用[L]修飾符,以便在規則匹配時停止處理更多規則。在這種情況下,你甚至可以使尾部斜線可選!

RewriteRule ^post/(.*)$ post.php?name=$1 [L] 
RewriteRule ^(.*)/?$ cat.php?name=$1 [L] 
0

嘗試使用的(.*?)代替(.*)

沒有問號,它是「貪婪的」,因爲它會匹配直到最後匹配的所有東西。使用問號,它只會匹配直線上的第一個匹配項。

0

讓斜線可選(兩次):

RewriteRule ^post/(.*?)/?$ post.php?name=$1 [L] 
RewriteRule ^(.*?)/?$ cat.php?name=$1 [L]