2016-06-10 95 views
0

我想有我的网址URL重写看起来像使用以下,但清洁它不工作,我不知道我是否应该添加任何其他内容,一个干净的格式

这是它现在的样子

example.com/product.php?product_id=144 & PRODUCT_NAME = 50毫升 - 瓶用眼镜,-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 

谢谢

+0

请再次停止问同样的问题。你在24小时内也问了同样的3次。等待别人回答。 –

+0

这是不同的@tomudding和没有回答另一个,如果你有任何htaccess的知识尝试帮助,而不是只是无用的评论 – notthatcoding

+0

什么是不工作?服务器返回什么错误? – starkeen

回答

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] 
+0

这是因为apache将特殊字符转换为十六进制代码。我已从第一条规则中删除B标志。尝试更新的规则。 – starkeen

+0

该网址现在看起来很干净,但请求我没有被处理我得到400不好的请求,任何线索? @starkeen – notthatcoding

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 
+0

我可以删除这个逗号从网址使用htaccess? – notthatcoding

+0

什么都没有发生,我应该添加什么我读另一个线程,我应该添加 选项+ FollowSymLinks是这有关吗? – notthatcoding

+0

'^ product /([0-9] +)/([A-Za-z0-9 - ,] +)?/ $'中的结尾'/?'是多余的:)删除它并重试 –