我的原始网址为customers.php?id=3
,我通过撰写$_GET['id']
来获取客户ID。
现在我在htdocs中编写了重写规则,我的网址是customers/id/3
。我试图通过$_GET['id']
获取客户ID,但这不起作用。谁能告诉我怎么办才能获得身份证?
我的网址重写是
RewriteEngine On
RewriteRule ^customers/([^/]*)$ /customers.php?id=$1 [L]
答案 0 :(得分:1)
你的重写规则是错误的;你正在捕捉customers/
部分之后的所有内容,直到第一个正斜杠,然后你就不允许任何事情。
在您的示例中,规则甚至不会触发,因为您的网址后面有正斜杠和字符。
你应该改变:
RewriteRule ^customers/([^/]*)$ /customers.php?id=$1 [L]
类似于:
RewriteRule ^customers/id/(\d+).*$ /customers.php?id=$1 [L]
^^ Allow for extra stuff after the id so you could add the name of your customer or something like that
^^^^^ Require at least one digit and only digits
如果您愿意,也可以删除ID,以便在customer/
之后直接输入该号码,但这取决于您。
答案 1 :(得分:0)
如果您使用:
customers.php?id=3
使用:
$_GET['id']
不是$ _GET ['customers']。
如果您想获得“客户”,请使用:customers.php?customers=3
你的改写将是这样的:
RewriteRule ^customers/id/([0-9]+)$ customers.php?id=$1 [L]
答案 2 :(得分:0)
有一种简单的方法可以解析该样式的网址(customer / id / 123):
$aUrlPieces = explode('/', $_SERVER['REQUEST_URI']);
print_r($aUrlPieces);
数组中的最后3个元素将是“customer”,“id”和“123”。
您可以更进一步,在应用程序中定义将采用相应数量参数的操作方法,这样您的网址将由PHP进行语法检查。
在这种情况下,操作方法“customer”将采用2个参数$identifier_type
和$identifier_value
。
这样,如果您不小心输入“customers /”而不是“customer /”,您将获得“Method not defined”异常。
答案 3 :(得分:0)
将您的重写规则更改为:
RewriteRule ^id/([^/]*)$ /customers.php?id=$1 [L]