我正在寻找一种在用户搜索我的网站时提供友好 URL 的方法。我目前有一个半功能选项,但它只适用于一个搜索词。我希望能够添加尽可能多的搜索词。
我的 URL 设置如下:
http://www.mydomain.com/tutorial/usersearch=word/sort=1
在 .htaccess 中使用以下正则表达式:
# Rewrite rule for the tutorial 'page selection' links
RewriteRule ^tutorial/page([0-9]+)$ tutorial.php?page=$1
RewriteRule ^tutorial/page([0-9]+)/usersearch=([A-Za-z_%20+-]+)$ tutorial.php?page=$1&usersearch=$2
RewriteRule ^tutorial/page([0-9]+)/usersearch=([A-Za-z_%20+-]+)/sort=([0-9]+)$ tutorial.php?page=$1&usersearch=$2&sort=$3
RewriteRule ^tutorial/usersearch=([A-Za-z_-]+)(/sort=([0-9]+))?$ tutorial.php?usersearch=$1&$2
上述代码的最后一行是指我正在尝试创建的友好搜索 URL。/sort=integer 部分也是可选的。输入搜索词并点击提交按钮后,以下内容被添加到不友好的 URL '&submit=Search' 中,所以我不知道是否也应将其作为一个选项考虑在内?
上面的 .htaccess 正则表达式有效,但只有一个搜索词。
' http://www.mydomain.com/tutorial/usersearch=word/sort=3 ' - 这行得通,但是只要在 'word' 之后添加一个空格,URL 就会失败,并且会出现 404 错误。我试过添加 ( )?, (%20)? 对于可选空间,但它甚至在那里失败。我尝试在第一个字符类中添加一个空格,但这完全失败了。
我确信有一种方法可以将上面的所有这些重写分组,但我失败了。知道如何修改我的正则表达式,以便匹配多个搜索词吗?
谢谢你的帮助。