0

我有一个具有以下规则的.htaccess文件:

RewriteRule ^api\/([A-Za-z0-9\-]+)\/?([0-9=a-zA-Z%]+)?\/?$   api.php?service=$1&param=$2 [QSA,L]

出于某种原因,它在我的主机上运行,​​但不在我的本地 LAMP 安装上。有什么我做错了吗?

Apache 版本: Apache/2.2.22 (Ubuntu)

错误消息: 404 Not Found(“在此服务器上找不到请求的 URL /api/word/search/。”)

编辑:有另一个重写规则正在工作,所以 mod_rewrite 模块被激活:

RewriteRule ^([a-z]+)\.page$    index.php?template=$1 [QSA,L]

Apache 站点配置是(本地):

DocumentRoot /var/www/Development-Env
<Directory />
        Options FollowSymLinks
        AllowOverride All
</Directory>
<Directory /var/www/Development-Env/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
</Directory>

编辑 #2我正在尝试匹配http://localhost/api/service/method/.

4

2 回答 2

1

可能未启用 apache mod rewrite,或者未允许 htaccess。在这一切之前不要忘记

RewriteEngine On

你也试试RewriteRule ^api/(.*)/(.*)$ api.php?a=$1&d=$2 [NC]

如果你需要一个 api 你有一个 api 我用这个

http://net.tutsplus.com/tutorials/php/working-with-restful-services-in-codeigniter-2/

于 2013-02-28T14:51:10.053 回答
1

根据Options Indexes FollowSymLinks MultiViews你的问题,我猜问题是启用了 MultiViews。

您可以尝试在重写规则集之上添加这一行:

Options +FollowSymlinks -MultiViews

于 2013-02-28T16:05:17.850 回答