2012-06-13 65 views
0

我在的.htaccess有這個規則URL重寫正則表達式

RewriteRule ^([^/\.]+)/?$ ?page=user&id=$1 [L] 

它改寫像

http://sitename.ext/nickname 

的URL

http://sitename.ext/?page=user&nickname 

的問題是,用點的URL像http://sitename.ext/nick.name.test我得到一個404錯誤..

我用正則表達式不好..

回答

3

這是因爲它沒有被重寫。您特別告訴它排除.,這就是它所做的。

就個人而言,我贊成這樣的事情:

RewriteRule user/(.+) ?page=user&id=$1 [L] 
+0

不要忘記排除任何結尾的斜線(如果存在)。 – Vulcan

1

如果你想正斜槓除外的任何字符匹配,正則表達式是[^/],因爲\.將導致它也無法比擬的網點。

您的規則應該是

RewriteRule ^([^/]+)/?$ ?page=user&id=$1 [L] 

您可能會發現this網站很有幫助。

+0

mmh ..我想要做的正則表達式必須匹配az,AZ,0-9,下劃線和圓點..並且如果存在或不是最終的shash ..'RewriteRule ^([\ w \。] + )/?$?page = user&id = $ 1 [L]'這可以完成這項工作嗎?謝謝.. – Fr0z3n

+0

是的,這將工作。 :) –