【发布时间】:2020-11-24 21:00:22
【问题描述】:
我遇到了.htaccess 文件的问题。
我们曾经有一个主域,即:co.example.com,最近我们切换到了www.example.com。所以我们添加了一个重写规则,将co.example.com/*重定向到www.example.com/*。
问题是我们在 co.example.com/api/* 上运行的服务需要保持活动状态,因此我在重定向中添加了排除项
RewriteCond %{REQUEST_URI} !^api/(.*) [NC]
但无论我如何更改它,Apache 总是执行 301 重定向到 www.example.com/index.php/api/*
这变成了一个问题,因为通过 POST 请求调用服务 y 并在 GET 上进行重定向。
这是.htaccess 文件的示例。
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www.example.com [NC]
RewriteCond %{REQUEST_URI} !^api/(.*) [NC]
RewriteRule ^(.*) https://www.example.com/$1 [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ index.php [L]
这条规则可能有什么问题? Apache 服务器在 Nginx 代理后面运行,这可能是个问题吗?
短期内我无法将第 3 方代码更改为指向 www.example.com/api/*,因此如果可能,我需要使用 .htaccess 解决此问题。
非常感谢任何帮助。
【问题讨论】:
-
我已经在我的回答中解决了最可能的原因。但是,您发布的指令本身不会触发重定向到
/index.php/api/*。
标签: apache .htaccess codeigniter nginx