Symfony 4安装后路由异常及本地域名配置问题求助
解决Symfony 4路由未找到与本地域名HTTPS自动跳转问题
我来帮你一步步搞定这两个棘手的小问题:
一、No route found for ".../public/index.php" 路由异常
你碰到这个问题核心是访问路径和路由配置不匹配,再结合Symfony的路由工作机制,按下面的步骤排查:
修正访问路径
你的routes.yaml里配置的是根路径/,对应的正确访问地址应该是:- 直接访问文件的话:
http://your-domain/public/index.php/(注意末尾的斜杠,这是关键) - 更规范的做法是把Apache虚拟主机的根目录直接指向Symfony项目的
public文件夹,这样直接访问http://mypath/就能匹配到/路由,不用在URL里带public/index.php。
- 直接访问文件的话:
验证路由配置有效性
先确认config/routes.yaml文件位置正确,内容没有拼写错误:index: path: / controller: App\Controller\ArticleController::index再用Symfony命令行工具检查路由是否正常加载:
php bin/console debug:router如果输出列表里能看到
index路由,说明配置本身没问题。清除Symfony缓存
Symfony 4默认跑在生产环境(prod),缓存会自动生成,刚修改的路由可能还没同步到缓存里,执行命令清空缓存:# 开发环境用这个 php bin/console cache:clear --env=dev # 生产环境用这个 php bin/console cache:clear --env=prod
二、本地域名自动跳转HTTPS并提示安全问题
这个问题要么是Apache配置强制了HTTPS,要么是浏览器的HSTS缓存在搞鬼,解决方法如下:
检查Apache虚拟主机配置
打开你的Apache虚拟主机配置文件(一般在conf/extra/httpd-vhosts.conf),看看有没有类似下面的强制HTTPS重写规则:RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]如果有,把这几行注释掉,然后重启Apache服务。
清除浏览器HSTS缓存
很多浏览器会记住曾经访问过的HTTPS域名,强制跳转,你可以这样操作:- Chrome:地址栏输入
chrome://net-internals/#hsts,找到「Delete domain security policies」,输入你的本地域名(比如mypath),点击删除。 - Firefox:地址栏输入
about:config,搜索network.stricttransportsecurity.preloadlist,设置为false,或者手动查找对应域名的条目删除。 - Edge:和Chrome操作类似,输入
edge://net-internals/#hsts进行删除。
- Chrome:地址栏输入
临时规避SSL安全提示
如果只是测试不需要HTTPS,按上面两步关闭强制跳转即可;如果非要用本地HTTPS,可以用mkcert生成本地可信证书,但暂时解决跳转问题的话,前两步就足够了。
内容的提问来源于stack exchange,提问作者Dima Rashevskiy
相关产品推荐
相关产品推荐

