.htaccess 如何使用htaccess更改文件夹名称并从URL末尾删除字符串

wbrvyc0a  于 2023-03-09  发布在  其他
关注(0)|答案(1)|浏览(149)
    • 我的目标**

我正在尝试使用htaccess来更改这样的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
到这样的网址
https://example.com/NEWNAME/item/a-long-file-name-separated-by-hyphens

    • 阶梯**

1.将URL中的OLDNAME替换为NEWNAME。只要在URL中找到"OLDNAME",就应执行此规则。
1.当URL包含"OLDNAME"时,有时会在URL的末尾出现字符串"-2"。如果找到此"-2"字符串,则也需要将其删除。
"我所尝试的"
我有从OLDNAMENEWNAME的重定向工作使用此规则...

RewriteRule ^OLDNAME/(.*)$ /NEWNAME/$1 [NC]

我已经阅读了mod_rewrite文档中的许多帖子和页面,但是我在删除-2方面还没有取得多大进展。
任何帮助感激不尽!

q1qsirdb

q1qsirdb1#

您可以使用此规则:

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

我假设你想重定向到新的网址,因此添加了R标志。
请注意,RewriteRule中以-2结尾的模式位于捕获组之外。当我们在目标中使用$1时,它将没有最后一个-2

测试输出:

curl -I 'localhost/OLDNAME/item/a-long-file-name-separated-by-hyphens'
HTTP/1.1 302 Found
Date: Fri, 03 Mar 2023 20:48:50 GMT
Server: Apache/2.4.54 (Unix) OpenSSL/1.1.1s PHP/8.1.12
Location: http://localhost/NEWNAME/item/a-long-file-name-separated-by-hyphens
Content-Type: text/html; charset=iso-8859-1

curl -I 'localhost/OLDNAME/item/a-long-file-name-separated-by-hyphens-2'
HTTP/1.1 302 Found
Date: Fri, 03 Mar 2023 20:49:53 GMT
Server: Apache/2.4.54 (Unix) OpenSSL/1.1.1s PHP/8.1.12
Location: http://localhost/NEWNAME/item/a-long-file-name-separated-by-hyphens
Content-Type: text/html; charset=iso-8859-1

相关问题