Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.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
重写2个php变量以清除url_Php_.htaccess_Mod Rewrite - Fatal编程技术网

重写2个php变量以清除url

重写2个php变量以清除url,php,.htaccess,mod-rewrite,Php,.htaccess,Mod Rewrite,我有一个网址:website.co.uk/product.php?id=123456&name=产品名称 并希望将其改写为: website.co.uk/product/123456/name-of-product 或者更好: website.co.uk/123456/name-of-product 这重写了第一个变量$id RewriteRule ^product/([0-9]+)/?$ product.php?id=$1 [NC,L] 至产品编号/123456

我有一个网址:website.co.uk/product.php?id=123456&name=产品名称

并希望将其改写为:

website.co.uk/product/123456/name-of-product
或者更好:

website.co.uk/123456/name-of-product
这重写了第一个变量$id

RewriteRule    ^product/([0-9]+)/?$    product.php?id=$1    [NC,L]    
至产品编号/123456


只需第二个变量

即可为2参数URI添加另一条规则:

RewriteRule ^product/([0-9]+)/?$ product.php?id=$1 [NC,L,QSA]

RewriteRule ^product/([0-9]+)/([\w-]+)/?$ product.php?id=$1&name=$2 [NC,L,QSA]

只需匹配另一个变量(根据需要更正范围):


当对正则表达式的使用有疑问时,我强烈推荐使用非常好的小型软件来试验和测试您的表达式。

这很有效,谢谢-是否可以删除产品/以便它只显示123456/产品名称?确保最后一条规则可以变成:
RewriteRule^([0-9]+)/([\w-]+)/?$product.php?id=$1&name=$2[NC、L、QSA]
更改htaccess文件后,我注意到,如果我在一个产品页面上,单击一个链接,例如“home.php”,它会将product/123456/name of product/home.php放在断开链接的链接之前……我是否应该将所有链接改为“home.php”,而不是将所有其他页面的链接都改为“home.php”更简单的方法,而不是更改所有内部链接,将website.co.uk/放在它们前面,或者您可以在
home.php
之前放置一个
,比如
,或者您可以尝试使用
BASE
这样的标记:
RewriteRule    ^product/([0-9]+)/([a-zA-Z0-9-]+)/?$    product.php?id=$1&name=$2    [NC,L]