我有一个 .htaccess 文件,其中包含以下规则:
RewriteRule ^api\/([A-Za-z0-9\-]+)\/?([0-9=a-zA-Z%]+)?\/?$ api.php?service=$1¶m=$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/
。
答案 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