.htaccess 如何使用htaccess从URL的特定位置替换特定单词

doinxwow  于 2022-11-25  发布在  其他
关注(0)|答案(2)|浏览(163)

我想从网址替换一个单词。我已经尝试了许多代码,但。不工作
例如,我有一个URL:https://www.example.com/blog/single/how-to-start-single-app
要重定向到URL -https://www.example.com/blog/post/how-to-start-single-app
尝试使用以下规则

RewriteRule ^(.*)single(.*)$ $1post$2 [R=301,L]

但是它将url中的所有单词替换为post。

2ekbmq32

2ekbmq321#

您可以使用REGEX执行此操作:

RedirectMatch  301 /old-slug/(.*) /newslug/$1

就你而言

RedirectMatch  301 /blog/single/(.*) /blog/post/$1

在这里,
(.*)是一个通配符,它匹配/old-slug/之后出现的任何内容,并将其保存以在目标URL中使用,$1输出源URL表达式中的第一个通配符。

wfveoks0

wfveoks02#

你的规则确实有道理,但你必须更精确。
遵循基于在顶层实施的规则中的绝对路径的策略:

RewriteRule ^/?blog/single/(.+)$ /blog/post/$1 [R=301,L]

或者在“blog”文件夹中以相对方式执行相同操作:

RewriteRule ^single/(.+)$ post/$1 [R=301,L]

这两种方法中的重要一点是通过使用^特殊字符将模式锚到主题的开头。
我个人更喜欢第一种策略。如果可能的话,你甚至应该在实际的http服务器的主机配置中实现这样的规则,如果你有访问权限的话。而不是使用多个 * 分布式 * 配置文件。

相关问题