【问题标题】:Rewriting a specific URL: adding a subdirectory重写特定 URL:添加子目录
【发布时间】:2022-01-18 09:30:00
【问题描述】:

我正在开发一个 WordPress 网站,我有一个类似的 URL

https://example.com/technische-uebersetzungen

我需要的是:

https://example.com/subdirectory/technische-uebersetzungen

我的代码有一个错误,它不会重写 URL。我将它放在现有.htaccess 文件的末尾。

RewriteEngine On
RewriteRule ^technische-uebersetzungen/(.*)$ /blog/technische-uebersetzungen/$1 [R=301,NC,L]

有人知道,那是什么虫子吗?

【问题讨论】:

  • 澄清一下,这个指令是一个外部的 3xx“重定向”,而不是一个内部的“重写”,正如你在文本中描述的那样。 (旁白: 使用 WordPress 时,您无法重写 .htaccess 中的 URL。)

标签: .htaccess mod-rewrite url-rewriting


【解决方案1】:

我的代码有一个错误,它不会重写 URL。我将它放在现有.htaccess 文件的末尾。

一个“错误”是将该规则放在.htaccess 文件的末尾。通过将规则放置在 WordPress 代码块之后,请求首先被重写为 index.php,并且您的规则永远不会被处理。

此“重定向”需要位于.htaccess 文件的顶部,之前 WordPress 代码块(即。之前 # BEGIN WordPress 注释标记) .

RewriteRule ^technische-uebersetzungen/(.*)$ /blog/technische-uebersetzungen/$1 [R=301,NC,L]

此规则匹配/technische-uebersetzungen/<anything>(注意第一个路径段后的强制斜杠),<anything> 部分被复制到目标 URL 的末尾。您的示例中没有提到这一点。

您的示例 URL 正好是 /technische-uebersetzungen(没有尾部斜杠)。并且没有任何内容附加到目标 URL 的末尾。

.htaccess 文件的顶部尝试以下操作:

RewriteRule ^technische-uebersetzungen(/.*)?$ /blog/$0 [R=301,NC,L]

这将匹配 /technische-uebersetzungen/technische-uebersetzungen/<anything> 并重定向到带有 /blog/ 前缀的相同 URL。

注意:您必须先使用 302(临时)重定向对此进行测试,以避免任何潜在的缓存问题,并且仅将其更改为 301(永久)重定向 - 如果这是有意的话 - 一旦您确认它按预期工作。

【讨论】:

  • 感谢您的回答,但不幸的是它不起作用。
  • @rabo 你所说的“不起作用”到底是什么意思?你有错误吗?不受欢迎的重定向?没有什么??当您请求https://example.com/technische-uebersetzungen 时会发生什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-12
  • 2015-02-06
  • 2010-10-26
相关资源
最近更新 更多