簡體   English   中英

友好的mod_rewrite用於具有多個術語的搜索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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM