我正在尝试将特定的结构化网址重写为另一种结构。
原始网址是
http://www.mywebsite.com/FF_Supersneaker_Black_Metallica_p/155-157.htm
我试图将其重写为
http://www.mywebsite.com/FF_Supersneaker_Black_Metallica.html
基本上删除“_p / 155-157.htm”并附加.html
我用来执行此操作的htaccess文件是
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule /(.*)/(.*)_p/[^/]*.htm$ /$1$2.html
</IfModule>
但它似乎失败了,这是我进入页面时得到的重写日志。
255.255.255.255 - - [25/Apr/2012:12:34:43 --0400] [www.mywebsite.com/sid#9b25ed8][rid#9e33c28/initial] (3) [perdir /var/www/test/] strip per-dir prefix: /var/www/test/FF_Supersneaker_Black_Metallica_p/155-157.htm -> FF_Supersneaker_Black_Metallica_p/155-157.htm
255.255.255.255 - - [25/Apr/2012:12:34:43 --0400] [www.mywebsite.com/sid#9b25ed8][rid#9e33c28/initial] (3) [perdir /var/www/test/] applying pattern '/(.*)/(.*)_p/[^/]*.htm$' to uri 'FF_Supersneaker_Black_Metallica_p/155-157.htm'
255.255.255.255 - - [25/Apr/2012:12:34:43 --0400] [www.mywebsite.com/sid#9b25ed8][rid#9e33c28/initial] (1) [perdir /var/www/test/] pass through /var/www/test/FF_Supersneaker_Black_Metallica_p/155-157.htm
我相信我的规则似乎有些不对劲,但我不确定是什么。如果有人能给我一些想法,我会很感激。
感谢您的帮助。
答案 0 :(得分:2)
首先,看看这个:
strip per-dir prefix: /var/www/test/FF_Supersneaker_Black_Metallica_p/155-157.htm -> FF_Supersneaker_Black_Metallica_p/155-157.htm
您要匹配的路径实际上是FF_Supersneaker_Black_Metallica_p/155-157.htm
,因为您在目录上下文(来自.htaccess
文件)中运行。所以它不会匹配以/
...
这表明你真正想要的只是......
RewriteRule (.*)_p/[^/]*.htm$ /$1.html
...如果您希望结果为:
FF_Supersneaker_Black_Metallica.html