Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php htaccess重写规则如何修复_Php_.htaccess_Url Rewriting - Fatal编程技术网

Php 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中,这仍然可以正常工作,并且我在共享链接等方面有问题 我怎样才能修复它,只需要一

我从url中获取$_get['id']来显示页面,到htaccess,我有以下代码来显示如下
shop/123
,而不是
shop.php?id=123

    RewriteEngine on
RewriteRule shop/(.*)/ shop.php?id=$1
RewriteRule shop/(.*) shop.php?id=$1
我的问题是。。如果我添加到url
shop/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的可接受字符是什么?只是数字吗?目前是的。这只是数字