我有这个网址:
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]
但是,嘿,看到评论,我才意识到:你有什么问题?您的正则表达式应该已经工作