gpt4 book ai didi

regex - mod_rewrite:用破折号替换下划线

转载 作者:行者123 更新时间:2023-12-03 12:07:13 25 4
gpt4 key购买 nike

我在这里显示我对REGEX-fu的尴尬无知,但是:我目前有一个网站,其中大量文章的URL都写为“article_name”,而较新的URL则写为“article-name”。

我想将它们全部使用破折号,所以是否可以使用正则表达式将较旧的URL重写为较新的等价形式?

预先感谢您!

最佳答案

首先,您必须在现有URL中实现一致性。基本上,您必须规范化所有现有名称才能始终使用破折号。好的,您已经完成了。

我们从以下假设开始:

该URL大致具有以下形式:

http://example.com/articles/what-ever/really-doesnt_matter/faulty_article_name

where only URLs under /articles should be rewritten, and only the /faulty_article_name part needs to be sanitized.

Greatly updated, with something that actually works

For Apache:

RewriteEngine     On
RewriteRule ^(/?articles/.*/[^/]*?)_([^/]*?_[^/]*)$ $1-$2 [N]
RewriteRule ^(/?articles/.*/[^/]*?)_([^/_]*)$ $1-$2 [R=301]

这通常是受到GApple回答的启发。

第一个 /?确保此代码将同时在vhost conf和 .htaccess文件上运行。后者不希望出现斜线。

然后,我添加 articles/部分以确保规则仅适用于 /articles中的URL。

然后,尽管URL中至少有两个下划线,但我们仍在循环浏览规则。当我们最后只剩下一个下划线时,第二条规则开始执行,将其替换为破折号,然后执行永久重定向。

ew

关于regex - mod_rewrite:用破折号替换下划线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1279681/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com