2014-09-12 34 views
1

我已经改变了我的网站,并想重写以下链接:我如何改写与C2%A0%一.asp的URL中

mysite.co.uk/productdetails/617/6/Casio%C2%A0CDP120%20Digital%20Piano%20in%20Black/ 

mysite.co.uk/Casio-CDP120-Digital-Piano-in-Black/302 

问题是%C2%A0曾经是%20不知道为什么这种情况已经改变,但是当它是20%,我可以重写它像这样:

RewriteRule "^productdetails/617/6/Casio CDP120 Digital Piano in Black/?$" /Casio-CDP120-Digital-Piano-in-Black/302 [L,NC,R=301] 

个其他网址是:

mysite.co.uk/productdetails/647/6/Casio%20PX350%20Digital%20Piano%20in%20Black/ 

mysite.co.uk/Casio-PX350-Digital-Piano-in-Black/296 

这些的我重写如下: RewriteRule "^productdetails/647/6/Casio PX350 Digital Piano in Black/?$" /Casio-PX350-Digital-Piano-in-Black/296 [L,NC,R=301] 有这些种类的URL的混合物(最后的数字将是每个产品的不同。

任何帮助欢迎

回答

0

以下3条规则将处理这个奇怪的URL重写这个问题。它放入你的root的.htaccess

RewriteEngine On 
RewriteBase/

# take care of %C2%A0 
RewriteRule ^(.+)\xc2\xa0(.+)$ $1-$2 [L,NE] 

# executes **repeatedly** as long as there are more than 1 spaces in URI 
RewriteRule "^(\S*) +(\S* .*)$" $1-$2 [L,NE] 

# executes when there is exactly 1 space in URI 
RewriteRule "^productdetails/617/6/(\S*) (\S*?)/?$" /$1-$2/302 [L,R=302,NE] 

RewriteRule "^productdetails/647/6/(\S*) (\S*?)/?$" /$1-$2/296 [L,R=302,NE] 
+0

感谢您的回复,但是如果我离开重写规则“^产品详细/ 617/6 /卡西欧CDP120数码钢琴黑/?$” /卡西欧CDP120数码钢琴在黑/ 302 [L,NC,R = 301]中,并添加您的三条重写规则,我收到以下404错误/ productdetails/617/6/Casio-CDP120-Digital-Piano-in-Black/302 – Ria 2014-09-12 15:49:54

+0

需要注释掉你的'RewriteRule'^ productdetails/61 ....'规则并且只用这3条规则测试。 – anubhava 2014-09-12 16:11:05

+0

再次感谢你的回复,但是同样的404错误/ productdetails/617/6/Casio-CDP120-Digital - 钢琴在黑色/ 302没有找到它需要成为/卡西欧CDP120 - 数码钢琴在黑色/ 302 – Ria 2014-09-12 16:31:47