2013-04-21 55 views
1

我很好奇它爲什麼不能工作並尋找解決方案。要在URL中添加連字符在mod重寫

以下是我的htaccess

RewriteRule ^field/category/([a-zA-Z0-9\-]+)&([a-zA-Z0-9\-]+)$ field.php?cat[]=$1&cat[]=$2 

這工作得很好,將URL domain.com/field/category/Ball &飲料

我怎樣才能改變&到 - 並進行它成爲domain.com/field/category/Ball-Drinks

我嘗試

RewriteRule ^field/category/([a-zA-Z0-9\-]+)-([a-zA-Z0-9\-]+)$ field.php?cat[]=$1&cat[]=$2 

它不起作用。 - 字符不被視爲文字。任何人都可以幫忙謝謝。

+0

那你剛纔的問題,也不需要一個答案了嗎? – 2013-04-21 08:15:02

回答

0

你必須逃離 - 角色:

RewriteRule ^field/category/([a-zA-Z0-9\-]+)\-([a-zA-Z0-9\-]+)$ field.php?cat[]=$1&cat[]=$2 
+0

嗨,我試過了\ - 不工作。 – 2013-04-21 08:02:18

0

我知道這是一個老問題,但我只花了一個小時搞清楚了這一點,所以我想我應該分享答案:

更換連字符[\-]以使RewriteRule將其視爲字符串文字。

所以最終的代碼如下:^field/category/([a-zA-Z0-9\-]+)[\-]([a-zA-Z0-9\-]+)$ field.php?cat[]=$1&cat[]=$2

+1

如果你這樣做,我認爲你需要將'$ 2'更改爲'$ 3',因爲你的更改導致$ 2'反向引用變成'-'正確的? (而不是'([a-zA-Z0-9 \ - ] +)')。但無論如何,我認爲這個答案可以通過使用'[\ - ]'而不是'(\ - )'完全避免這個問題。 – sideshowbarker 2015-08-27 15:39:36