Slim Framework+EasyPHP无法通过局域网IP访问问题求助
我之前也碰到过一模一样的情况,从localhost切换到局域网IP访问Slim项目时,.htaccess的URL重写规则很容易掉链子,咱们一步步来排查解决:
1. 确认Apache的AllowOverride配置
当你把Listen localhost:8000改成Listen *:8000后,必须确保项目所在目录的Directory配置块里开启了AllowOverride All——否则Apache会直接忽略.htaccess里的所有规则。
打开httpd.conf(如果用了虚拟主机,就找对应的vhost配置文件),定位到你项目public目录的配置段,改成这样:
<Directory "/你的项目绝对路径/svn/sites/branches/project_name/public"> AllowOverride All Require all granted </Directory>
改完记得重启Apache服务,这个步骤很关键!
2. 调整.htaccess里的RewriteBase
Slim的URL重写高度依赖RewriteBase的正确配置,原来用localhost访问时路径匹配没问题,但切换到IP后,路径上下文可能变了。
打开项目public目录下的.htaccess文件,添加或修改RewriteBase,确保它和你局域网访问的路径一致:
RewriteEngine On # 对应你URL里IP/端口之后到public的完整路径 RewriteBase /svn/sites/branches/project_name/public/ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^ index.php [QSA,L]
比如你的访问URL是http://192.168.x.x:8000/svn/sites/branches/project_name/public/api/cidades,那RewriteBase就设为/svn/sites/branches/project_name/public/。
3. 快速验证入口文件可用性
先别直接测试API接口,先访问http://192.168.x.x:8000/svn/sites/branches/project_name/public/index.php,确认入口文件能正常访问。如果这个都打不开,那得先排查Apache的目录权限、文件路径是否正确;如果能打开,再逐步测试/api/cidades路径。
4. 额外检查:mod_rewrite模块是否启用
虽然你localhost访问正常,但以防万一,可以确认httpd.conf里这一行没有被注释:
LoadModule rewrite_module modules/mod_rewrite.so
如果前面有#,去掉它后重启Apache。
内容的提问来源于stack exchange,提问作者gsr1992

