2011-08-16 174 views
1

我有這些線在我的.htaccess哪些錯誤與此htaccess的線

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^restaurant_pos$ index.php?route=$1 [L] 

,但如果你訪問的網站here然後你會看到左上角我的PHP調試語句

echo print_r($_REQUEST); 

它打印

Array 
(
    [route] => 
) 

爲什麼空.....這是造成問題...我是做錯了什麼

+0

是'$ 1'值你想指定的路線PARAM? –

+0

我想,如果你想分配 「restaurant_pos」 到'然後1' $你必須把它放在括號'重寫規則^(restaurant_pos)$的index.php?路徑= $ 1 [L]' – Trace

+1

@Tamer所以括號使$ 1個可用的...所以,如果我有2個()括號然後我可以引用$ 2即時猜測 – Teneff

回答

1

更換

RewriteRule ^restaurant_pos$ index.php?route=$1 [L] 

RewriteRule ^(.*)$ index.php?route=$1 [L] 
+0

等做支架使$ 1個可用的...所以,如果我有2個()括號然後我可以引用$ 2 – Trace

+0

是。 '()'用於匹配條件,所以例如'^(。*)/(。*)$'會讓你重寫'的index.php?路徑= $ 1秒= $ 2' – stealthyninja

2

嘗試使用$0代替。或者,嘗試添加捕獲組(無論周圍應$1去括號)。

RewriteRule ^(restaurant_pos)$ index.php?route=$1 [L] 
2

您引用的替代變量$1不存在。這些都與括號定義是這樣的:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^restaurant_pos_([0-9]+)$ index.php?route=$1 [L] 

這將例如在URL中一些restaurant_pos匹配後,放入了GET參數route

http://www.example.com/restaurant_pos_1234 

將導致

index.php?route=1234 

或者,如果你想獲得的一切:

RewriteRule ^(.*)$ index.php?route=$1 

應在GET參數route域名後返回的一切。