Ինչպես վերահղել բոլոր հարցումները դեպի հանրային/թղթապանակ՝ օգտագործելով .htaccess Laravel-ում

Եթե ​​դուք տեղադրել եք Laravel-ը ձեր հիմնական դոմենում, ձեր public_html պանակում գտնվող հաշվի համար (հիմնական դոմենի հիմնական գրացուցակը), բայց չեք ցանկանում, որ ձեր այցելուները տեսնեն լռելյայն domain.com/public url-ը, ապա հետևեք այս քայլերին.


Symlink way (խորհուրդ է տրվում)

1. Ենթադրենք, որ դուք ունեք Laravel հավելված /home/user/laravel գրացուցակում։ (user-ը ձեր հոսթինգի հաշվի օգտանունն է)

  • SSH-ի միջոցով մուտք գործեք ձեր սերվեր, կամ օգտագործեք cPanel-ի տերմինալը և մուտքի համար մուտքագրեք cd հօme:
  • Կրկնօրինակեք public_html գրացուցակը, եթե դրա մեջ որևէ կարևոր ֆայլ ունեք:
  • Ջնջեք public_html գրացուցակը` մուտքագրելով rm -rf public_html:

2. Այժմ ստեղծեք սիմվոլիկ հղում՝ public_html անունով, աշխատեցնելով ձեր Laravel հավելվածների հանրային գրացուցակը.

ln -s /home/user/laravel/public public_html

  • Այժմ public_html-ը ձեր հավելվածների հանրային գրացուցակի սիմվոլիկ հղումն է:
  • Եթե ​​որևէ բան փոխվի ձեր հավելվածների հանրային գրացուցակում, այն անմիջապես հասանելի կլինի օգտագործողի համար:


3. Մուտք դեպի .htaccess ֆայլ

Փնտրեք .htaccess ֆայլերը ձեր public_html (կամ ձեր դոմենի root պանակում): Լռելյայնորեն, կետով ֆայլերը թաքնված է ձեր File Manager-ում: Բոլոր .files դիտելու համար մուտք գործեք ձեր cPanel և սեղմեք «File Manager», որտեղ դուք կկարողանաք տեսնել ձեր հաշվի բոլոր ֆայլերը: Թաքնված ֆայլերը (նաև կոչվում են «.» ֆայլեր) ցուցադրելու համար սեղմեք «Settings» կոճակը File Manager-ի աջ անկյունում: Եթե ​​դեռ չեք կարողանում գտնել .htaccess ֆայլը, ստեղծեք Նոր Ֆայլ File Manager-ում՝ .htaccess անունով:


.htaccess ֆայլը բացելուց հետո ավելացրեք հետևյալ կոդը. 

 

<IfModule mod_rewrite.c>

<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>

RewriteEngine On
# Prevent direct access to the "public" folder - redirect to root
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /public/
RewriteRule ^public/(.*) /$1 [R=302,L]

# Redirect Trailing Slashes If Not A Folder...
# - but look for the file in the "public" folder
# (ensure we are not already in the "public" folder)
RewriteCond %{REQUEST_URI} !^/public/
RewriteCond %{DOCUMENT_ROOT}/public/$1 !-d
RewriteRule ^(.*)/$ /$1 [R=302,L]

# Rewrite "everything" to the "public" subdirectory if not already
# This ignores existing files/dirs in the document root
RewriteCond %{REQUEST_URI} ^/(.*)
RewriteRule !^public/ public/%1

# Handle Front Controller... (as before)
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>

4. Սեղմեք «Save Your Changes»: Այս ամենից հետո դուք և ձեր այցելուները պետք է կարողանաք մուտք գործել ձեր Laravel-ի հանրային թղթապանակ domain.com-ի միջոցով: Հիշեք, որ գուցե ստիպված լինեք մաքրել ձեր բրաուզերի քեշը:

Եթե ​​ցանկանում եք տեղադրել Laravel-ը ձեր public_html-ից տարբեր թղթապանակում (օրինակ, եթե դուք արդեն ունեք այլ կայք ձեր հիմնական դոմենի անվան վրա), մենք խորհուրդ ենք տալիս ստեղծել ենթադոմեն (օրինակ, laravel.domain.com): Laravel-ը նոր ստեղծված ենթադոմենի վրա տեղադրելուց հետո կարող եք հետևել վերը նշված քայլերին: Սա նույնպես վավեր է, եթե դուք տեղադրել եք Laravel-ը ձեր հաշվի տակ գտնվող addon դոմենում:

  • laravel, htaccess
  • 104 Հաճախորդ սա օգտակար են համարել
Օգնեց ձեզ այս պատասխանը?