2016-08-25 44 views
1

我找的這個本質上是相反的...正則表達式無法檢測htaccess的重定向

^(.*)(?=\/nz\/)(.*)$ 

出於某種原因

^(.*)(?!=\/nz\/)(.*)$ 

不工作,因爲我認爲它會。我預期在得到其選擇沒有/新西蘭/在他們這樣做,將不勝感激所有線路的解決方案選擇這樣

https://www.awebsite.com/fg/about-us/our-business -yes 
https://www.awebsite.com/xx/about-us/our-business -yes 
https://www.awebsite.com/pp/about-us/our-business -yes 
https://www.awebsite.com/nz/about-us/our-business -no 
/xx/about-us/our-business -yes 
/pp/about-us/our-business -yes 
/fg/about-us/our-business -yes 
/nz/about-us/our-business -no 
/about-us/our-business - no (is this also possible with 1 regex statement or do i need multiple rewritecond statements) 

任何指導。

附註:這是爲了在.htaccess中重寫/重定向。

回答

1

這是我認爲你應該使用正則表達式:

^((?!\/nz\/).)*$ 

說明:

  • (?!\/nz\/).斷言,接下來的字符串中的每個位置不是/nz/,然後匹配任何字符
  • ((?!\/nz\/).)*該表達式隨後被匹配任意次數,因爲URL可以是任意長度

演示在這裏:

Regex101

更新:

這裏是應該滿足您的所有需求正則表達式:

^(?!\/nz\/)\/\w\w(?!\/nz\/)\/((?!\/nz\/).)*$ 
+0

這似乎已修復它。請您在開始時解釋使用雙括號。此選擇還包括/關於我們/我們的業務線。有沒有辦法不選擇該行,因爲它不以/ xx/structure開頭。 – Ryan

+0

謝謝你現在使用'RewriteCond%{REQUEST_URI} ^(。*)\/[az] [az] \ /(。*)$ RewriteCond%{REQUEST_URI} ^((?!\/nz \ /) )* $ RewriteRule。 https://www.awebsite.com/apage.html [L,R = 301]' – Ryan

相關問題