3

我正在尝试为我正在开发的应用程序构建一个非常简单的 RESTful 测试平台。我正在使用 .htaccess 将 url 重定向到我的控制器脚本,在那里我将解析 url 以处理逻辑。

我的重定向工作正常,但问题是,如果我执行 POST/PUT/DELETE,Firebug 会显示我的请求正确地进入测试平台,但我得到一个 301 重定向响应,然后是第二个 GET 响应。

如何在不向浏览器发送 301 的情况下使用 htaccess 进行 url 重定向?

这是我现在使用的 .htaccess:

RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1
4

1 回答 1

4

尝试这样的事情:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

除非请求的文件存在(例如图像或 CSS 文件),否则这将重定向。我经常使用这些规则,而且我从来没有遇到过 301。

检查您的 PHP 脚本是否没有将响应更改为 301。

于 2009-05-19T00:26:52.233 回答