【发布时间】:2013-09-08 15:26:59
【问题描述】:
我有这个结构:site.com/api/index.php。当我将数据发送到site.com/api/ 时没有问题,但我想如果 api 也能在没有斜杠的情况下工作会更好,如下所示:site.com/api。这会导致 301 重定向,从而丢失数据(因为未转发数据)。我尝试了所有我能想到的重写并且无法避免重定向。这是我目前的重写规则(尽管它可能无关紧要)。
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^api/(.*)$ api/index.php [L]
我可以在不使用尾部斜杠的情况下使此网址正常工作并维护帖子数据吗?
一些无效的重写:(仍然重定向)
RewriteRule ^api$ api/index.php [L]
RewriteRule ^api/*$ api/index.php [L]
【问题讨论】:
-
尾部斜线由apache模块mod_dir添加:httpd.apache.org/docs/2.2/mod/mod_dir.html
-
另外,你的重写规则,它的编写方式,有尾部斜杠作为规则的一部分。您可能只需从规则中删除
/即可。 -
对。我在想我可以将对该目录的请求重写为 index.php 以便模块永远不会启动,但它不起作用。我会更新以显示我在那里尝试过的内容。
-
这个 .htaccess 文件在哪里?它必须在 api 的父目录中。此外,
!-d条件可能必须被删除。这意味着如果请求的文件不是目录且/api是目录,则条件将不匹配。 -
它在父目录中,没有条件我试过了。
标签: php apache .htaccess redirect mod-rewrite