【问题标题】:.htaccess redirect and rewrite url if REQUEST_URI starts with specific path如果 REQUEST_URI 以特定路径开头,.htaccess 重定向并重写 url
【发布时间】:2018-08-01 02:31:50
【问题描述】:

我正在开发一个 Wordpress 网站,它需要一个需要访问 WP API 端点的插件。

它想访问该站点的:

http://myhost.test/wp/wp-json/erp/v1/hrm/employees/1\?include\=department,designation,reporting_to,avatar,roles

但是文件夹结构的改变,导致真实的、实际的链接应该是:

http://myhost.test/wp-json/erp/v1/hrm/employees/1\?include\=department,designation,reporting_to,avatar,roles

如您所见,%{REQUEST_URI} 的开头不应有 /wp

我正在尝试使这项工作:但它不会重定向请求:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} ^/wp/wp\-json/
RewriteRule ^/wp/wp\-json(.*) /wp\-json$1 [L,R]

我不明白我做错了什么,

^/wp/wp-json 之后的所有内容我都会收到,然后转发给^/wp-json

发生了什么事?

问候,

【问题讨论】:

  • 如果您在 .htaccess 文件中使用它,请从 RewriteRule 的第一个参数中删除前导 /。我不确定这是唯一的问题,但在 .htaccess 中,mod_rewrite 不会像在 <Directory><VirtualHost> 上下文中那样收到领先的 /。它将以^wp 开始匹配,而不是^/wp RewriteRule ^wp/wp\-json(.*) /wp\-json$1 [L,R]
  • @MichaelBerkowski 是的,我认为这就是答案,您能否创建该解决方案以便我将其标记为答案?

标签: php wordpress apache .htaccess


【解决方案1】:

在 .htaccess 上下文中使用 mod_rewrite 与 <Directory><VirtualHost> 上下文在解析模式方面的要求略有不同。对您的情况最重要的是,在 .htaccess 中,RewriteRule 的第一个参数与前导斜杠 / 不匹配,因为该模式被认为是相对于它所在的目录。

RewriteRule 匹配器参数中删除前导 /

RewriteRule ^wp/wp\-json(.*) /wp\-json$1 [L,R]

【讨论】:

    猜你喜欢
    • 2021-04-29
    • 2012-02-01
    • 2014-11-26
    • 2015-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-04
    相关资源
    最近更新 更多