2013-10-21 80 views
1

我有网址:如何去除.htaccess中的字符串?

http://www.mydomain.com/326-something/something.jpg

在此之前,于: http://www.mydomain.com/img/p/3/2/6/something.jpg

但我也网址: http://www.mydomain.com/125-326-something/something.jpg

我怎么能忽略这个125-?当然,我有像126,127等前缀的网址。我如何忽略.htaccess这个?

我想从这个网址http://www.mydomain.com/125-326-something/something.jpg

这里显示http://www.mydomain.com/img/p/3/2/6/something.jpg是我的htaccess的规则:

RewriteCond %{HTTP_HOST} ^mydomain.com$ 
RewriteRule ^([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$1$2$3.jpg [L] 
RewriteCond %{HTTP_HOST} ^mydomain.com$ 
RewriteRule ^([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$1$2$3$4.jpg [L] 
RewriteCond %{HTTP_HOST} ^mydomain.com$ 
RewriteRule ^([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$1$2$3$4$5.jpg [L] 
RewriteCond %{HTTP_HOST} ^mydomain.com$ 
RewriteRule ^([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$1$2$3$4$5$6.jpg [L] 
RewriteCond %{HTTP_HOST} ^mydomain.com$ 
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$1$2$3$4$5$6$7.jpg [L] 
RewriteCond %{HTTP_HOST} ^mydomain.com$ 
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$1$2$3$4$5$6$7$8.jpg [L] 
RewriteCond %{HTTP_HOST} ^mydomain.com$ 
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$7/$1$2$3$4$5$6$7$8$9.jpg [L] 
RewriteCond %{HTTP_HOST} ^mydomain.com$ 
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$7/$8/$1$2$3$4$5$6$7$8$9$10.jpg [L] 
+4

我希望这是一个个人项目,或者稍后将要让你工作的下一个人会讨厌以前的开发人员:P – PeeHaa

+0

它是开源软件,我希望与以前版本的图像url具有复古兼容性因为 现在网址是: http://www.mydomain.com/326-something/something.jpg 上的网址是: http://www.mydomain.com/125-326-something/something。 jpg 我想以新格式显示旧网址的图片。 –

+0

不是一个答案,但你有没有考虑过一个PHP重写器,而不是让它少一点......丑陋? – PeeHaa

回答

3

我个人高度建议通过一个控制PHP脚本路由所有请求,并在管理这一真正的编程语言,而不是mod_rewrite。

但是,为了回答直接的问题:

RewriteCond %{HTTP_HOST} ^mydomain.com$ 
RewriteRule ^\d+-(\d+-[_a-zA-Z0-9-]*/.+?\.jpg)$ $1 

上述规则之前添加这些行(未经测试),并允许其落入通过定期修改之前,应该去掉你不想要的部分处理。

+0

不幸的是,来自prestashop.com的开发人员发明了这种方法...非常感谢您的帮助,它完美地工作。 –

+0

@KrystianPodemski你的示例URL中的“something”是否总是将相同的文本重复两次?如果是这样的话,可以使用后向引用使它更健壮一些,如果不是这样的话,那么就会有一个洞(我看不出任何插入方式),因为如果文本部分以数字和短划线开始,他们也会被剥离。如果这永远不会发生,那么就没有必要担心它。 – DaveRandom

+0

是的,那总是图像的类型,在这种情况下它是“大的”。 URL始终具有相同的结构,并且您的解决方案对于我的所有旧图像网址都是完美的。 –