Php htaccess重写规则如何修复
我从url中获取$_get['id']来显示页面,到htaccess,我有以下代码来显示如下Php htaccess重写规则如何修复,php,.htaccess,url-rewriting,Php,.htaccess,Url Rewriting,我从url中获取$_get['id']来显示页面,到htaccess,我有以下代码来显示如下shop/123,而不是shop.php?id=123 RewriteEngine on RewriteRule shop/(.*)/ shop.php?id=$1 RewriteRule shop/(.*) shop.php?id=$1 我的问题是。。如果我添加到urlshop/123/test/test/test中,这仍然可以正常工作,并且我在共享链接等方面有问题 我怎样才能修复它,只需要一
shop/123
,而不是shop.php?id=123
RewriteEngine on
RewriteRule shop/(.*)/ shop.php?id=$1
RewriteRule shop/(.*) shop.php?id=$1
我的问题是。。如果我添加到urlshop/123/test/test/test
中,这仍然可以正常工作,并且我在共享链接等方面有问题
我怎样才能修复它,只需要一个参数就可以转到404
对不起,我的英语如果
id
仅为数字,您可以将重写规则更改为:
RewriteEngine on
RewriteRule shop/(\d+)/ shop.php?id=$1
RewriteRule shop/(\d+) shop.php?id=$1
如果id
中也有字母表:
RewriteEngine on
RewriteRule shop/([a-zA-Z\d]+)/ shop.php?id=$1
RewriteRule shop/([a-zA-Z\d]+) shop.php?id=$1
试试这个:
<IfModule mod_rewrite.c>
RewriteEngine On
</IfModule>
RewriteRule ^shop/([0-9]+)/(.*) shop.php?id=$1 [L]
RewriteRule ^shop/([0-9]+)/(.*)/ shop.php?id=$1 [L]
重新启动发动机
重写规则^shop/([0-9]+)/(*)shop.php?id=$1[L]
重写规则^shop/([0-9]+)/(.*)/shop.php?id=$1[L]
希望这能奏效。谢谢。您可以使用:
RewriteEngine on
RewriteRule ^shop/([^/]+)$ /shop.php?id=$1 [L]
这将把/shop/foobar重写为/shop.php?id=foobar,但不会用斜杠或额外的路径信息重写/shop/foobar/。id的可接受字符是什么?只是数字吗?目前是的。这只是数字