我不太擅长使用 mod_rewrite 或正则表达式,但我最终需要对要移动的站点使用 301 重定向。旧址的结构是这样的
http://www.mywebsite.com/FF_Supersneaker_Black_Metallica_p/155-157.htm
同一产品的新网站也是如此
https://www.mywebsite.com/FF_Supersneaker_Black_Metallica_p.html
我需要做的是提取并删除“/ 155-157”并将扩展名更改为.html而不是.htm
所以逻辑上我想我需要找到最后一次出现的“/”和最后一次出现的“。” 并将其间所有内容的值更改为“”。那么文件扩展名的更改在互联网上无处不在,但我不知道如何将其与其余部分合并。
编辑: 这是我的 .htaccess 文件:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule /(.*)/(.*)/[^/]*.htm$ /$1$2.html
</IfModule>
当我尝试使用它时,这是我的重写日志中的相关条目。(我只是更改了ip和域名。我使用tail并复制了我尝试进入页面时弹出的条目。
255.255.255.255 - - [25/Apr/2012:11:57:24 --0400] [www.mywebsite.com/sid#9b25ed8][rid#9e3cc48/initial] (1) [perdir /var/www/test/] pass through /var/www/test/FF_Supersneaker_Black_Metallica_p/155-157.htm
我添加了额外的 /(.*) 因为我的测试页面上有一个额外的目录。其结构是 http://www.mywebsite.com/test/FF_Supersneaker_Black_Metallica_p/155-157.htm 重定向到 http://www.mywebsite.com/test/FF_Supersneaker_Black_Metallica_p.html
抱歉问了这么多问题,您也只能启用重写日志购买进入 apache.conf 或 httpd.conf 文件并重新启动服务器,对吗?如果是这种情况,那么我没有权限。