Apache URL重写 - 匹配目录

时间:2013-02-28 14:39:54

标签: apache mod-rewrite rewrite

我有一个 .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/

2 个答案:

答案 0 :(得分:1)

可能没有启用apache mod rewrite,或者没有启用htaccess。 并且在所有这些之前不要忘记

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

man使用codeigniter如果你需要api你有api我用过这个

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

答案 1 :(得分:1)

根据您提问中的Options Indexes FollowSymLinks MultiViews,我猜问题是MultiViews已启用。

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

Options +FollowSymlinks -MultiViews

相关问题