我想重写这个url:
http://cyanogenupdatetracker.com/api/v1/show_devices.php
到http://cyanogenupdatetracker.com/api/v1/devices
我用这个.htaccess文件
Options +FollowSymlinks RewriteEngine on RewriteRule ^devices$ devices/ RewriteRule ^devices/$ /var/www/api/v1/show_devices.php
它总是返回一个404错误,即使我知道,并且100%确定PHP文件存在于给定的位置。 我尝试了一切(PHP文件,自定义虚拟主机,重写基地之前没有path),但没有任何工作。
这个目录的apacheconfiguration如下:
Alias /api /var/www/api <Directory /var/www/api> Options FollowSymLinks DirectoryIndex index.php AllowOverride All </Directory>
我完全完成了这一点。 这似乎很简单(只有几个PHP文件),为什么它很难,只是为了简化url,使他们更好。
我究竟做错了什么?????
我认为你的问题是,在一个.htaccess文件的上下文中是隐含的。
实际上,这意味着您的RewriteRule不会映射到文件系统位置,而是映射到URIpath。 除此之外,还需要与Alias指令一起使用。 另外检查这个比较 。
cyanogenupdatetracker.com/api/v1/devices可能已被redirect到cyanogenupdatetracker.com/api/v1/var/www/api/v1/show_devices.php 。 你的规则应该看起来像:
RewriteRule ^devices/$ show_devices.php
其次,我的宠物狗,为什么你显然使用.htaccess文件,当你明显有权访问主要的Apacheconfiguration文件? 引自.htaccess文件中的手册 :
如果您有权访问httpd主服务器configuration文件, 则应该完全避免使用
.htaccess文件。 使用.htaccess文件会降低您的Apache HTTP服务器速度 。 您可以在.htaccess文件中包含的任何指令在主要的Apacheconfiguration文件中设置得更好,因为它具有相同的效果,性能更好。
…
同样,在主服务器configuration中,mod_rewrite指令在许多方面工作得更好。
通过将/ var / www / html中的documentroot更改为/ var / www,将api文件夹更改为/ var / www / html之外,从而修复了我自己。