我想为我的Laravel应用自动从http重定向到https。
url是app1.domain.com
我已将以下行添加到公用文件夹中的.htaccess文件中,但它似乎没有生效。
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
当我输入http://app1.domain.com
时,网址不会重定向并停留在http
上。当我点击通过http://app1.domain.com/auth/login
访问我的应用时,我得到了404.如果我手动将https
添加到https://app1.domain.com/auth/login
,那么它可以正常工作,但如果我可以重定向到<{1}}自动。
的.htaccess
https
还尝试将我的laravel .env文件从<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
# Added those 2 lines for ssl redirect
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>
更改为APP_URL=http://app1.domain.com
,但没有做任何事情。
解
使用网络服务器将所有http请求重定向到https。
所以改变了我的APP_URL=https://app1.domain.com
文件:
httpd.conf
到:
<VirtualHost *:80>
ServerName www.app1.domain.com
ServerAlias app1.domain.com
ServerAdmin email@example.com
DocumentRoot /var/www/html/app1.domain.com/public
</VirtualHost>
不要忘记<VirtualHost *:80>
ServerName www.app1.domain.com
ServerAlias app1.domain.com
Redirect permanent / https://app1.domain.com/ <-- this line added
ServerAdmin email@example.com
DocumentRoot /var/www/html/app1.domain.com/public
</VirtualHost>
有什么想法吗?感谢
答案 0 :(得分:3)
我使用中间件功能,只需将其应用于所有路由。然后,如果您需要任何特定网址,您可以将其取消
namespace App\Http\Middleware;
use Closure;
class HttpsProtocol {
public function handle($request, Closure $next)
{
if (!$request->secure() && env('APP_ENV') === 'production') {
return redirect()->secure($request->getRequestUri(), 301);
}
return $next($request);
}
}
然后添加到你的kernel.php文件
'https' => [
'App\Http\Middleware\HttpsProtocol'
],
然后就像这样把它放到你的路线上
Route::get('/', ['middleware' => array('web','https'),'uses' => 'HomeController@index']);
或全球注册
答案 1 :(得分:0)
将其放入.htaccess文件
RewriteEngine On
# Redirect to https
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
它对我有用。