在url重写中添加-而不是空白


Add - instead of white spaces in url rewriting

我有这个网址:

http://www.site.com/en/about.php?id=112&name=andrew marshall dickens

我想这样重写:

http://www.site.com/112/andrew-marshall-dickens.html

到目前为止:

RewriteRule ^([^/]*)/([^/]*)'.html$ /en/about.php?id=$1&name=$2 [L]

我对"-"字有意见。有什么建议吗?谢谢

您正试图使用Regex从字符串中间移除字符,该字符串中可能有任何数量的字符位于RewriteRule的中间。一方面,这是不可能的,另一方面,你正在传递ID,所以我认为你可以使用PHP脚本中的ID来获取名称,所以实际上不需要从URL变量中解析名称,作为第三个选项,如果你想使用名称变量,为什么不在输出字符串之前先在PHP中str_replace-字符和ucwords()呢?

我相信您不需要传递name param,因为id可以获得它。

总之:

RewriteRule ^([0-9]+)/([a-z-]+)'.html$ /en/about.php?id=$1&name=$2 [L]

但是,嘿,看到评论,我才意识到:你有什么问题?您的正则表达式应该已经工作