如何在Symfony2中定义需要HTTPS但不自动从HTTP重定向的路由?
例如,我已经知道我可以设置“方案”,例如:
demo:
resource: "@DemoBundle/Controller/DemoController.php"
type: annotation
prefix: /api/demo
schemes: [https]
这会将用户从“http://www.example.com/api/demo/ {route}”重定向到“https://www.example.com/api/demo/ {route}”。但是,我希望尝试使用“http”失败并出现404或500错误,而直接尝试使用“https”的路由成功。
更新
我在路由文件中保留了“schemes”参数,并将以下内容添加到我的.htaccess文件中:
RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} api
RewriteRule ^(.*)$ %{ENV:BASE}/ssl-only.php [R,L]
答案 0 :(得分:0)
我建议从路由中删除schemes: [https]
,而是检查Controller中的方案,如果不是HTTPS,则将其重定向到您想要的特定错误页面:
public function yourRoutingAction()
{
if ($this->getRequest()->getScheme() == 'http') {
return $this->redirect($this->generateUrl('specific_route', 301));
}
//Otherwise continue your process
//You can change the Status code to whatever you want instead of 301
}