URL重写为干净的格式

时间:2016-06-10 08:39:49

标签: .htaccess url mod-rewrite

我正在尝试让我的网址看起来更干净,使用下面但它不起作用我不知道我是否应该添加其他内容,

这就是它现在的样子

example.com/product.php?product_id=144&product_name=50ml-bottle-with-glasses,-shirt

这就是我希望他们看起来的方式

example.com/product/144/50ml-bottle-with-glasses,-shirt

基本上就是我使用的

RewriteEngine On
RewriteRule    ^product/([0-9]+)/([A-Za-z0-9-]+)/?$    product.php?product_id=$1&product_name=$2   [NC,L]    # Handle product requests

谢谢

2 个答案:

答案 0 :(得分:0)

您的参数product_name中有逗号。尝试更改.htaccess并在此参数的正则表达式中添加逗号:([A-Za-z0-9-,]+)。所以你的htaccess将是这样的:

RewriteEngine On
RewriteRule    ^product/([0-9]+)/([A-Za-z0-9-,]+)$    product.php?product_id=$1&product_name=$2   [NC,L]    # Handle product requests

答案 1 :(得分:0)

这应该有效:

RewriteEngine On
#1)redirect from "/product\.php\?product_id=123&product_name=foo" to "/product/123/foo"
RewriteCond %{THE_REQUEST} /product\.php\?product_id=([^&]+)&product_name=([^\s&]+) [NC]
RewriteRule ^ /product/%1/%2? [NE,L,R]

#2)internally map "/product/123/foo" to "/product\.php\?product_id=123&product_name=foo"
RewriteRule ^product/([0-9]+)/(.+)/?$    product.php?product_id=$1&product_name=$2   [B,NC,L]