2011-05-17 105 views
1

我有一個很奇怪的問題,在我的.htaccess重定向。htaccess返回引用返回沒有值的某些匹配

我已經建立了的規則是:

RewriteRule ^([a-zA-Z0-9\-]*)/$ ?mode=book&permalink=$1 

它既多字詞組匹配:
http://www.fernwoodpublishing.ca/About-Canada-Youth-and-Children/

和單字詞組:
http://www.fernwoodpublishing.ca/Kaandossiwin/

然而,當它確實匹配那些沒有任何連字符的單詞短語,反向引用沒有正確傳遞。所以,在上面的例子中應該去

?mode=book&permalink=Kaandossiwin 

這將正常工作,它,而不是去

?mode=book&permalink= 

剛剛產生的錯誤和中斷的東西整體轉換。

我試過一種方法來解決這個問題,並沒有任何東西似乎有幫助。任何更熟悉htaccess的人都會明白爲什麼在這些特定情況下沒有返回引用。 (我已經用其他例子對它進行了測試,並且精確地經歷了同樣的問題,所以我確定它在所有情況下都是匹配的,但只在返回包含連字符的情況下返回回參考文件。

謝謝這麼多!

回答

0

試試下面的,我相信分組的格式不正確。

RewriteRule ^([\w-]+)/$ ?mode=book&permalink=$1 

我也建議你的前綴作爲鏈接此URL格式是相當寬鬆的。也就是說它的任何URL匹配與字母數字,下劃線或短劃線,如下所示更加靈活

RewriteRule ^book/([\w-]+)/?$ book.php?permalink=$1 
+0

謝謝傑森!不幸的是,我的客戶請求了url結構 - 否則我會去/ book /子目錄結構。它使事情有點棘手。我嘗試了你的建議,但不幸的是它似乎完全打破了匹配。我不知道發生了什麼問題了! – sarah 2011-05-17 22:17:05

+0

嘗試'^([\ w \ - ] +)/ $'。 – 2011-05-18 01:01:24

+0

非常感謝,傑森!由於零匹配,在htaccess中發現另一行與此衝突。正則表達式我真的很糟糕! – sarah 2011-05-18 15:30:53