.htaccess 当index.php出现在URL中时htaccess规则不起作用

xfyts7mz  于 2023-03-09  发布在  PHP
关注(0)|答案(1)|浏览(136)

以下.htaccess规则将OLDNAME更改为NEWNAME,并从URL末尾删除字符串-2(如果存在)。

RewriteRule ^OLDNAME/(.+?)(?:-2)?/?$ /NEWNAME/$1 [L,NC,R=302,NE]

这条规则是由@anubhava在这篇文章(How to use htaccess to change a folder name and remove a string from the end of a URL)中编写的,它在以下URL上运行良好。

  • https://example.com/OLDNAME/item/a-long-file-name-separated-by-hyphens-2
  • https://example.com/OLDNAME/item/a-long-file-name-separated-by-hyphens

在深入研究这个问题时,我发现如果URL包含index.php,则会导致此规则失败。

  • https://example.com/index.php/OLDNAME/item/a-long-file-name-separated-by-hyphens-2
  • https://example.com/index.php/OLDNAME/item/a-long-file-name-separated-by-hyphens

我尝试过修改规则以包含index.php,但语法还不正确。
重写规则^索引. php/旧名称/(.+?)(?:-2)?/?$/新名称/$1 [左侧,北卡罗来纳州,右侧= 302,东北]
任何帮助都很感激。

j0pj023g

j0pj023g1#

这个规则对我很有效。现在,index.php可以出现在URL中,也可以不出现。

RewriteRule ^(index\.php/)?OLDNAME/(.+?)(?:-2)?/?$ /NEWNAME/$2 [L,NC,R=302,NE]

相关问题