重写规则无法正常工作

Rewrite rule is not working properly

我正在尝试使用 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= [L,QSA,NC]
RewriteRule ^([\w-]+)/([\w-]+)/?$ index.php?p=&id= [L,QSA,NC]
RewriteRule ^([\w-]+)/([\w-]+)/([\w-]+)/?$ index.php?p=&id=&city= [L,QSA,NC]
RewriteRule ^([\w-]+)/([\w-]+)/([\w-]+)/([\w-]+)/?$ index.php?p=&id=&city=&name= [L,QSA,NC]

在这里,第一条、第二条和第三条规则对我有用。但我的问题是,如果我有一个带空格的字符串作为第四个变量,我的第四条规则就不起作用了。而且,如果我再次用一个词来表达,那也行不通。

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

谢谢。

你可以在你的角色中包含 space class:

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