我的.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 :(得分: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]