![](/img/trans.png)
[英]Apache mod_rewrite from unfriendly query string to a friendly URL
[英]friendly mod_rewrite for search URL with multiple terms
我正在尋找一種當用戶搜索我的網站時提供友好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)? 可選空間,但它甚至在那里失敗。 我嘗試在第一個字符類中添加一個空格,但這完全失敗了。
我敢肯定,有一種方法可以將上面所有這些重寫分組,但是我失敗了。 任何想法我如何可以修改我的正則表達式,以便它可以匹配多個搜索詞?
謝謝你的幫助。
您的正則表達式不匹配空格:
[A-Za-z_-]
僅匹配大寫/小寫的ascii字母下划線和連字符。
更改規則,例如也要搶占空間:
RewriteRule ^tutorial/usersearch=([^/]+)(?:/(sort=[0-9]+))?$ index.php?usersearch=$1&$2 [L,QSA,NC]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.