这个htaccess系列有什么问题

时间:2011-08-16 13:54:36

标签: php .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] => 
)

为什么它是空的.....这导致了问题......我做错了什么

3 个答案:

答案 0 :(得分:2)

尝试使用$0代替。或者,尝试添加一个捕获组(围绕$1中的任何内容的括号。)

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

答案 1 :(得分:2)

您正在引用不存在的替换变量$1。这些是用括号定义的,如下所示:

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

例如,这会匹配restaurant_pos之后的网址中的数字,并将其放入GET参数route

http://www.example.com/restaurant_pos_1234 

将导致

index.php?route=1234

或者如果你想要获得一切:

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

应返回GET参数route中域名后面的所有内容。

答案 2 :(得分:1)

替换

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

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