【问题标题】:mod_rewrite for a WordPress page doesn't seem to workWordPress 页面的 mod_rewrite 似乎不起作用
【发布时间】:2016-09-07 04:46:36
【问题描述】:

我有一个 WordPress 站点和一个自定义站点,并在用户导航到特定 URL 时将用户从 WordPress 站点发送到自定义站点。假设主要的 WP 站点位于 www.example.com。如果有人去http://example.com/p/M12345,我们想把它发送到https://my.example.com/myexample/members/login.html?login=M12345。我认为最好的方法是在 .htaccess 文件中使用 mod_rewrite

我尝试设置主 .htaccess 文件,但似乎没有任何效果。 www.example.com 上的 WP 站点使用了一个重定向插件,该插件通常可以解决这个问题,但上周它搞砸了我们的整个站点,所以我不愿意继续使用它。我想使用 .htaccess 文件,因为这感觉是正确的方法。

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^(\/p\/)([mM]\d{5})$ https://my.example.com/myexample/members/login.html?login=$2 [R=301,L]
</IfModule>

我们尝试过的一些事情:

  • 添加 [NC,R=301,L]、[L,QSA] 等标志

  • 将 RewriteRule 更改为 Redirect 301 并删除了标志

  • 添加了 RewriteCond ^(/p/)$,认为这只会发生在 example.com/p/ 页面上

让这个工作的正确方法是什么?

【问题讨论】:

  • 永远不要用R=301测试!

标签: wordpress apache .htaccess mod-rewrite


【解决方案1】:

.htaccess 中的前导斜杠不匹配,p 之前还有额外的[。也没有必要逃避/

RewriteEngine On
RewriteRule ^p/([mM]\d{5})/?$ https://my.example.com/myexample/members/login.html?login=$1 [R=301,L]

【讨论】:

  • 哎呀——“[”是一个错字。这不在我的正常规则中(我将其更改为在问题中比我的实际用例更有意义)。无论如何-我不知道前导斜线不匹配。删除后,一切正常。谢谢!我讨厌这样小而愚蠢的事情把你的一整天都搞砸了。
猜你喜欢
  • 2019-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-10
  • 1970-01-01
相关资源
最近更新 更多