【发布时间】:2016-04-09 14:09:35
【问题描述】:
在运行本地服务器的 OSX 机器上进行开发时,我创建了一个 .htaccess 文件来控制对 REST api 的访问。但是,我也需要部署的实际主机是运行 XAMPP 的 Windows 机器。我将相同的 .htaccess 文件从开发服务器移至实时服务器,但它似乎不再正常运行了。
这是 .htaccess 文件的内容:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule api/v1/(.*)$ api/v1/api.php?request=$1 [QSA,NC,L]
</IfModule>
.htaccess 文件与 api.php 文件位于同一目录,该文件是单个目录。因此,当我访问从 OSX 机器托管的此页面时,它位于:
<IP Address>/RESTDevelopement/api.php
(本机实际文件夹路径为:.../Documents/RESTDevelopment/api.php)
当我转到 URL:<IP Address>/RESTDevelopement/api/v1/query/ 时,它会通过将请求发送到 <IP Address>/RESTDevelopement/api.php?request=query/ 来响应
这很好用,我已经使用了几个星期没有问题。
但是,windows 机器却不是这样......
在我的 Windows 机器上,我正在运行 XAMPP 服务器,并将我的项目存储在 htdocs 文件夹中。实际位置是:
G:\xampp\htdocs\RESTDevelopment\api.php
我使用与 OSX 相同的方式访问它:
<IP Address>/RESTDevelopement/api.php
但是,当我转到同一页面使用 api <IP Address>/RESTDevelopement/api/v1/query/时,它给了我一个内部服务器错误。
日志文件表明它处于重定向循环中。我尝试使用 the 来跟踪循环,但这对我来说没有多大意义:
[Tue Jan 05 11:41:15.925963 2016] [rewrite:trace3] [pid 6680:tid 1704] mod_rewrite.c(476): [client 10.1.10.70:54696] 10.1.10.70 - - [10.1.10.70/sid#604b00][rid#2c81030/initial] [perdir G:/xampp/htdocs/RESTDevelopment/] add path info postfix: G:/xampp/htdocs/RESTDevelopment/api -> G:/xampp/htdocs/RESTDevelopment/api/v1/query/
[Tue Jan 05 11:41:15.925963 2016] [rewrite:trace3] [pid 6680:tid 1704] mod_rewrite.c(476): [client 10.1.10.70:54696] 10.1.10.70 - - [10.1.10.70/sid#604b00][rid#2c81030/initial] [perdir G:/xampp/htdocs/RESTDevelopment/] strip per-dir prefix: G:/xampp/htdocs/RESTDevelopment/api/v1/query/ -> api/v1/query/
[Tue Jan 05 11:41:15.925963 2016] [rewrite:trace3] [pid 6680:tid 1704] mod_rewrite.c(476): [client 10.1.10.70:54696] 10.1.10.70 - - [10.1.10.70/sid#604b00][rid#2c81030/initial] [perdir G:/xampp/htdocs/RESTDevelopment/] applying pattern 'api/v1/(.*)$' to uri 'api/v1/query/'
[Tue Jan 05 11:41:15.925963 2016] [rewrite:trace2] [pid 6680:tid 1704] mod_rewrite.c(476): [client 10.1.10.70:54696] 10.1.10.70 - - [10.1.10.70/sid#604b00][rid#2c81030/initial] [perdir G:/xampp/htdocs/RESTDevelopment/] rewrite 'api/v1/query/' -> 'api/v1/api.php?request=query/'
[Tue Jan 05 11:41:15.925963 2016] [rewrite:trace3] [pid 6680:tid 1704] mod_rewrite.c(476): [client 10.1.10.70:54696] 10.1.10.70 - - [10.1.10.70/sid#604b00][rid#2c81030/initial] split uri=api/v1/api.php?request=query/ -> uri=api/v1/api.php, args=request=query/
[Tue Jan 05 11:41:15.925963 2016] [rewrite:trace3] [pid 6680:tid 1704] mod_rewrite.c(476): [client 10.1.10.70:54696] 10.1.10.70 - - [10.1.10.70/sid#604b00][rid#2c81030/initial] [perdir G:/xampp/htdocs/RESTDevelopment/] add per-dir prefix: api/v1/api.php -> G:/xampp/htdocs/RESTDevelopment/api/v1/api.php
[Tue Jan 05 11:41:15.925963 2016] [rewrite:trace2] [pid 6680:tid 1704] mod_rewrite.c(476): [client 10.1.10.70:54696] 10.1.10.70 - - [10.1.10.70/sid#604b00][rid#2c81030/initial] [perdir G:/xampp/htdocs/RESTDevelopment/] strip document_root prefix: G:/xampp/htdocs/RESTDevelopment/api/v1/api.php -> /RESTDevelopment/api/v1/api.php
[Tue Jan 05 11:41:15.925963 2016] [rewrite:trace1] [pid 6680:tid 1704] mod_rewrite.c(476): [client 10.1.10.70:54696] 10.1.10.70 - - [10.1.10.70/sid#604b00][rid#2c81030/initial] [perdir G:/xampp/htdocs/RESTDevelopment/] internal redirect with /RESTDevelopment/api/v1/api.php [INTERNAL REDIRECT]
[Tue Jan 05 11:41:15.926963 2016] [rewrite:trace3] [pid 6680:tid 1704] mod_rewrite.c(476): [client 10.1.10.70:54696] 10.1.10.70 - - [10.1.10.70/sid#604b00][rid#2c8b018/initial/redir#1] [perdir G:/xampp/htdocs/RESTDevelopment/] add path info postfix: G:/xampp/htdocs/RESTDevelopment/api -> G:/xampp/htdocs/RESTDevelopment/api/v1/api.php
[Tue Jan 05 11:41:15.926963 2016] [rewrite:trace3] [pid 6680:tid 1704] mod_rewrite.c(476): [client 10.1.10.70:54696] 10.1.10.70 - - [10.1.10.70/sid#604b00][rid#2c8b018/initial/redir#1] [perdir G:/xampp/htdocs/RESTDevelopment/] strip per-dir prefix: G:/xampp/htdocs/RESTDevelopment/api/v1/api.php -> api/v1/api.php
[Tue Jan 05 11:41:15.926963 2016] [rewrite:trace3] [pid 6680:tid 1704] mod_rewrite.c(476): [client 10.1.10.70:54696] 10.1.10.70 - - [10.1.10.70/sid#604b00][rid#2c8b018/initial/redir#1] [perdir G:/xampp/htdocs/RESTDevelopment/] applying pattern 'api/v1/(.*)$' to uri 'api/v1/api.php'
[Tue Jan 05 11:41:15.926963 2016] [rewrite:trace2] [pid 6680:tid 1704] mod_rewrite.c(476): [client 10.1.10.70:54696] 10.1.10.70 - - [10.1.10.70/sid#604b00][rid#2c8b018/initial/redir#1] [perdir G:/xampp/htdocs/RESTDevelopment/] rewrite 'api/v1/api.php' -> 'api/v1/api.php?request=api.php'
[Tue Jan 05 11:41:15.926963 2016] [rewrite:trace3] [pid 6680:tid 1704] mod_rewrite.c(476): [client 10.1.10.70:54696] 10.1.10.70 - - [10.1.10.70/sid#604b00][rid#2c8b018/initial/redir#1] split uri=api/v1/api.php?request=api.php -> uri=api/v1/api.php, args=request=api.php&request=query/
在给出重定向错误之前,最后 5 行在日志中重复了几次。
我尝试过的事情:
- 我通过一个非常简单的测试确保正在读取 htaccess 文件
- 我通过一个非常简单的测试确保 mod_rewrite 模块正常工作
- 我尝试将
RewriteBase设置为各种目录/文件夹,以确定它是否被错误地重定向...我对此了解不多,所以我盲目射击,但没有成功。 - 我在 google 上搜索了很长一段时间,看看是否有其他人在使用 XAMPP 时遇到此问题,但似乎每个人都在使用一致的模式。
注意:我确实为此目录设置了AllowOverride All。
感谢您的帮助!
【问题讨论】:
标签: php apache .htaccess mod-rewrite xampp