Laravel自动重定向网址从http到https

时间:2016-11-03 13:27:01

标签: .htaccess laravel laravel-5.2

我想为我的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>

有什么想法吗?感谢

2 个答案:

答案 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']);

或全球注册

Docs

答案 1 :(得分:0)

将其放入.htaccess文件

RewriteEngine On

# Redirect to https
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

它对我有用。