簡體   English   中英

在Azure中部署的Laravel Web應用程序中的HTTPS路由

[英]HTTPS routing in Laravel web app deployed in Azure

我想強制通過HTTPS進行路由。 我在Azure雲平台中有一個Web應用程序,在/ public文件夾中有以下web.config文件:

<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="Imported Rule 1" stopProcessing="true">
          <match url="^(.*)/$" ignoreCase="false" />
          <conditions>
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
          </conditions>
          <action type="Redirect" redirectType="Permanent" url="/{R:1}" />
        </rule>
        <rule name="Imported Rule 2" stopProcessing="true">
          <match url="^" ignoreCase="false" />
          <conditions>
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
          </conditions>
          <action type="Rewrite" url="index.php" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

為了強制進行路由,Azure 表示要添加以下內容:

<system.webServer>
   <rewrite>
      <rules>
         <rule name=”Redirect to https”>
            <match url=”(.*)”/>
            <conditions>
                <add input=”{HTTPS}” pattern=”Off”/>
                <add input=”{REQUEST_METHOD}” pattern=”^get$|^head$” />
            </conditions>
            <action type=”Redirect” url=”https://{HTTP_HOST}/{R:1}”/>
         </rule>
      </rules>
    </rewrite>
</system.webServer>

您對我如何更改原始web.config文件以使其適合並強制使用HTTPS有任何想法嗎?

解決了

我只需要添加規則。 修改后的Web配置為:

<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="Imported Rule 1" stopProcessing="true">
          <match url="^(.*)/$" ignoreCase="false" />
          <conditions>
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
          </conditions>
          <action type="Redirect" redirectType="Permanent" url="/{R:1}" />
        </rule>
        <rule name="Imported Rule 2" stopProcessing="true">
          <match url="^" ignoreCase="false" />
          <conditions>
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
          </conditions>
          <action type="Rewrite" url="index.php" />
          <rule name=”Redirect to https”>
            <match url=”(.*)”/>
            <conditions>
                <add input=”{HTTPS}” pattern=”Off”/>
                <add input=”{REQUEST_METHOD}” pattern=”^get$|^head$” />
            </conditions>
            <action type=”Redirect” url=”https://{HTTP_HOST}/{R:1}”/>
         </rule>
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

我相信您可以從Laravel方面解決這個問題。

考慮以下路線:

Route::get('signin', ['uses' => 'AuthController@signin', 'https']);

此路由僅用作https。 前段時間我不得不處理這種情況。

如果您的laravel應用程序的目錄架構是這樣的:

wwwroot/
    app/
    public/
    ...
    .env
    ...

您可以使用應用程序根目錄中的內容直接創建文件web.config

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
   <rewrite>
      <rules>
         <rule name="Redirect to https">
            <match url="(.*)"/>
            <conditions>
                <add input="{HTTPS}" pattern="Off"/>
                <add input="{REQUEST_METHOD}" pattern="^get$|^head$" />
            </conditions>
            <action type="Redirect" url="https://{HTTP_HOST}/public/{R:1}"/>
         </rule>
      </rules>
    </rewrite>
</system.webServer>
</configuration>

它將所有HTTP請求重定向到HTTPS,並重定向到到公用文件夾。

如有任何其他疑問,請隨時告訴我。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM