【问题标题】:Incorrect htaccess rewrite rule不正确的 htaccess 重写规则
【发布时间】:2021-10-15 23:22:02
【问题描述】:

我正在使用以下代码,但显示不正确。

错误:目前域名前多了一个"/",域名后多了一个"[QSA,L]"。 希望现在有人可以帮助我。

add_action( 'init', 'mdv_add_rule' );
function mdv_add_rule() {
    add_rewrite_rule( 'demo/(.+)$', 'https://example.com/$1 [R=301,L]' );
}

感谢收看

【问题讨论】:

  • add_rewrite_rule 可能不适合这种东西,而仅适用于本地重写。看起来它希望第二个参数始终是本地路径,这可以解释为什么它自己为 / 加上前缀。并且使用 QSA 和 L 标志对于那些有点重写也是有意义的。如果您没有明确的理由说明绝对需要在代码中完成此操作,那么您最好手动将必要的 RewriteRule 添加到您的 .htaccess 文件中。
  • @CBroe 感谢您的关注和回复,我需要在主要的 htaccess 部分中这样做,以避免在使用“options-permalink”设置时它们将被删除。
  • 只需删除多余的 / 并在 RewriteRule 行中用 [R=301,QSA,L] 替换您的标志。您还可以删除 QSA 标志,因为您的规则会自动附加查询字符串,因此不需要它。
  • @AmitVerma 我正在寻找一种根据我的代码删除它的方法,谢谢

标签: wordpress .htaccess


【解决方案1】:

我需要在主 htaccess 部分中这样做,以避免在使用“options-permalink”设置时它们将被删除。

为避免在 WordPress 中重置永久链接时删除/覆盖指令,您只需在 .htaccess 文件的顶部添加指令,在 # BEGIN WordPress 部分之前。

任何外部重定向都应该在任何 WordPress 重写之前进行(包括在 RewriteRule ^index\.php$ - [L] 指令之前)。

您无需重复 RewriteEngine On 指令,因为该指令已包含在文件后面的 WordPress 部分中。 (如果您有多个 RewriteEngine 指令,那么 last 实例将获胜并控制整个文件。)

【讨论】:

  • 好的,感谢您的解释,我已在 htaccess 中应用以更快、更简单地处理。我从你那里学到的另一件事是“RewriteEngine On”不需要重复很多次。我正在使用多次重复 "" 。我是否需要像“RewriteEngine On”一样删除它们。
  • @DucPhuli 不客气。您可以删除额外的 <IfModule> 包装器。 (但不要碰# WordPress 部分中的指令。)如果指令是可选的,并且您在可能未安装 mod_rewrite 的多个服务器上使用相同的配置,则只需要 <IfModule mod_rewrite.c> 包装器。请参阅 my answer 到网站管理员堆栈上的以下问题:Is Checking For mod_write Really Necessary?
  • 好的,谢谢。以后会多看,如果有什么不明白的地方,希望能得到更多的解答。
猜你喜欢
  • 1970-01-01
  • 2021-04-30
  • 2010-11-09
  • 2016-05-15
  • 1970-01-01
  • 1970-01-01
  • 2011-11-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多