簡體   English   中英

正則表達式規則排除帶有特定單詞的網址

[英]Regex rule to exclude url with specific word

當我在自己的網站上搜索“ abc 920 def”時,域將觸發:

http://www.domain.com/?s=abc+920+def

然后,此重定向規則:

​/?(.*)=(.*)920(.*)

會將其重定向到以下類別: domain.com/all-things-920/

現在的問題是,我還有其他一些頁面會為收據頁面生成隨機數,例如:

/store/receipt/?ouid=0955a8980823k920

因為該URL包含920 ,它將重定向到我不想要的類別domain.com/all-things-920/

我試過一些正則表達式組合,但沒有運氣。 如果網址中包含ouid ,是否可以排除正則表達式規則?

我試過了:/?( /?(?!ouid)(.*)=(.*)920(.*) . /?(?!ouid)(.*)=(.*)920(.*) . /?(?!ouid)(.*)=(.*)920(.*) . /?(?!ouid)(.*)=(.*)920(.*)沒有運氣。

當我使用規則/?s=(.*)920(.*) ,它將/?/放在url路徑的中間。 例如domain.com/?/all-things-920/

您可以使用如下重寫規則:

RewriteCond %{QUERY_STRING} (?:^|&)s=.*?920[^&]*(?:&|$)
RewriteRule ^ /all-things-920/? [L,R]

如果您真的只想要正則表達式在/s=上匹配任何920字符串,則可以嘗試:

/s=(.*)920(.*)

重定向邏輯應該屬於PHP,而不是.htaccess或您正在重定向的任何東西。

然后,您可以輕松檢查$_GET['s']值。

您可以使用header("Location: www.domain.com/wherever");進行重定向header("Location: www.domain.com/wherever");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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