Php 通过URL重写从URL中删除数字

Php 通过URL重写从URL中删除数字,php,.htaccess,mod-rewrite,Php,.htaccess,Mod Rewrite,我试图找到一种重写URL的方法,这样,如果变量p的值以一个数字开头,则该数字将从URL中删除,URL将以p的值重写,如下所示: domain.com/index.php?p=23_Product&ms=0 改写为: domain.com/Product&ms=0 我当前的htaccess文件如下所示,除数字删除部分外,所有内容均按我希望的方式工作: RewriteEngine On RewriteCond %{THE_REQUEST} /index\.php\?p=((?!

我试图找到一种重写URL的方法,这样,如果变量p的值以一个数字开头,则该数字将从URL中删除,URL将以p的值重写,如下所示:

domain.com/index.php?p=23_Product&ms=0
改写为:

domain.com/Product&ms=0
我当前的htaccess文件如下所示,除数字删除部分外,所有内容均按我希望的方式工作:

RewriteEngine On

RewriteCond %{THE_REQUEST} /index\.php\?p=((?!(?:admin|superadmin|[^&]*?edit))[^\s&]+)(?:&(\S+))? [NC]
RewriteRule ^ /%1?%2 [R=302,L,NE]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+?)/?$ index.php?p=$1 [L,QSA]
我试图进行此修改,但我得到一个重定向循环:

RewriteEngine On

RewriteCond %{THE_REQUEST} /index\.php\?p=([0-9]{0,99})(?:&(\S+))? [NC]
RewriteRule ^ /%2 [R=302,L,NE]

RewriteCond %{THE_REQUEST} /index\.php\?p=((?!(?:admin|superadmin|[^&]*?edit))[^\s&]+)(?:&(\S+))? [NC]
RewriteRule ^ /%1?%2 [R=302,L,NE]


RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^[0-9]{0,99}(.+?)/?$ index.php?p=$2 [L,QSA]
你能告诉我我做错了什么吗?
谢谢

但是如果你用这个模式重写这个URL domain.com/Product&ms=0,^.+?/?$index.php?p=$1[L,QSA],你会得到这个:index.php?p=index.php?p=23_Product&ms=0@TiMESPLiNTER我是非常新的网址重写,所以我不怀疑有错误。。。我知道第一个代码是有效的,我只想删除p值以数字开头的数字,但为什么要删除p参数的数字?将http://domain.com/index.php?p=Product 是一个有效的URI吗?@anubhava不,它将是无效的,我只是希望它以两种方式重写,以便用户永远不会看到附加在p的名称前面的数字。。。若我可以用两种方式重写它,那个么它应该可以工作,对吗?但一旦使用R标志从URI中删除了数字,那个么它就不能在以后的内部重写URI中返回。