重写规则无法正常工作

时间:2015-07-22 16:06:33

标签: .htaccess mod-rewrite url-rewriting

我正在尝试使用Apache Mod-Rewrite编写SEO友好的usls。

我的网址是这样的。

index.php?p=edit-profile 
index.php?p=edit-profile&id=3 
index.php?p=edit-profile&id=3&city=sydney
index.php?p=edit-profile&id=3&city=sydney&name=some example text

这是我试过的方式。

RewriteRule ^([\w-]+)/?$ index.php?p=$1 [L,QSA,NC]
RewriteRule ^([\w-]+)/([\w-]+)/?$ index.php?p=$1&id=$2 [L,QSA,NC]
RewriteRule ^([\w-]+)/([\w-]+)/([\w-]+)/?$ index.php?p=$1&id=$2&city=$3 [L,QSA,NC]
RewriteRule ^([\w-]+)/([\w-]+)/([\w-]+)/([\w-]+)/?$ index.php?p=$1&id=$2&city=$3&name=$4 [L,QSA,NC]

这里,第一,第二和第三条规则对我有用。但我的问题是如果我有一个带有第四个变量空格的字符串我的第四个规则不起作用。而且,如果我再说一个单词,它就不起作用了。

有谁能告诉我如何解决这个问题。有没有办法用连字符替换这些空格?

谢谢。

1 个答案:

答案 0 :(得分:1)

您可以在角色类中包含空格:

RewriteRule ^([\w-]+)/?$ index.php?p=$1 [L,QSA,NC]
RewriteRule ^([\w-]+)/([\w-]+)/?$ index.php?p=$1&id=$2 [L,QSA,NC]
RewriteRule ^([\w-]+)/([\w-]+)/([\w-]+)/?$ index.php?p=$1&id=$2&city=$3 [L,QSA,NC]
RewriteRule ^([\w-]+)/([\w-]+)/([\w-]+)/([\s\w-]+)/?$ index.php?p=$1&id=$2&city=$3&name=$4 [L,QSA,NC]