0

我正在尝试将特定的结构化 url 重写为另一个结构。

原来的网址是

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

我相信我的规则似乎有问题,但我不确定是什么。如果有人能给我一些想法,我将不胜感激。

感谢您的任何帮助。

4

1 回答 1

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
于 2012-04-25T16:46:12.523 回答