2014-08-28 79 views
1

我website.co.uk/product.php?id=123456 &名=名称的产品改写2 PHP变量干净网址

,想改写这个来:

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

您可以添加其他规则来进行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] 
+0

此作品谢谢 - 是否可以删除产品/以便它只显示123456 /产品名称? – user3312792 2014-08-28 14:12:34

+0

当然最后一条规则可以变成:'RewriteRule ^([0-9] +)/([\ w-] +)/?$ product.php?id = $ 1&name = $ 2 [NC,L,QSA]' – anubhava 2014-08-28 14:15:53

+0

since更改htaccess文件,我注意到,如果我在产品页面上,然后单击一个链接,例如'home.php',它会将产品/ 123456/name-of-product/home.php放在链接之前我把所有的链接改为http://www.website.co.uk/home.php,而不是只是'home.php',所有其他页面都一样? - 如果我这样做的话,这一切都有效,但只是看看是否有更简单的方法,而不是更改所有的内部链接,让它们在前面有website.co.uk/ – user3312792 2014-08-28 14:39:54

0

只要匹配其他变量(修正的范围内,以满足您的需求):

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

如果对正则表达式有疑问,我强烈建议The Regex Coach,用于试验和测试您的表情的很棒的小型软件。