วิธีรัน Laravel บนแชร์โฮส แบบไม่ต้อง /public

Ask by Save Pongsiri 2 weeks ago

เมื่อเราต้องอัปโปรเจค Laravel ของเราขึ้นไปโฮสที่เป็นแชร์โฮสที่มีโฟลเดอร์ public_html มาให้เราอัพเว็บได้อย่างเดียว สิ่งที่เราต้องทำคือ ถ้าเราสามารถอัปไฟล์นอกโฟลเดอร์ public_html ได้ เราก็อัปขึ้นไปที่โฟลเดอร์นอก public_html แล้วเปลี่ยนชื่อโฟลเดอร์ public ใน laravel เป็น public_html แทนก็ได้ แต่ถ้าเราไม่มีสิทธิ์อัปไฟล์นอกโฟลเดอร์ public_html แล้วละก็ ให้ใช้วิธีนี้เป็นวิธีสุดท้าย (เพราะความปลอดภัยมันน้อยกว่า)

  • 1. ย้ายทุกอย่างจากโฟลเดอร์ /public ออกมาอยู่ในโฟลเดอร์โปรเจค 

2. เปิดไฟล์ index.php ขึ้นมา แล้วแก้ไขตามนี้

require __DIR__.'/bootstrap/autoload.php';

$app = require_once DIR.'/../bootstrap/app.php';







1 Replies

  • Image
    savepong
    1 week ago

    ใครที่รัน laravel บนเซิร์ฟเวอร์ที่เป็น IIS อาจต้องเพิ่มไฟล์ web.config ไว้ที่โฟลเดอร์โปรเจคด้วย ถ้ายังไม่มีก็สร้างไฟล์ใหม่ชื่อ web.config แล้วนำโค้ดด้านล่างนี้มาใส่ครับ

    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>


Your Reply