soheil
6 سال پیش توسط soheil مطرح شد
4 پاسخ

تغییر در htaccess

سلام دوستان

من پروژه لاراول خودم را در سرور آپلود کردم و به دو روش امکان درست کردن لینک public وجود دارد
1- محتوای public را در public_html قرار دهیم و بقیه را در یک فولدر عقب تر که در index.php باید تغییر بدیم
من این روش را نمیخواهم استفاده کنم یا روش هایی شبیه به این که باید تغییر بوشه و نام و ... بدیم

2 - مدیریت از htaccess من با کد زیر این کار رو انجام میدم و روت اصلی که فراخونی میشه میره محتوا را از فولدر پابلیک میگیره و url هم اوکی هست و تغییری نمیکنه
ولی یک مشکلی وجود دارد زمانی که با public هم url را فراخوانی کنی باز میکنه !! که میخوام اینجا 404 بده

<IfModule mod_rewrite.c>
   RewriteEngine On
   RewriteRule ^(.*)$ public/$1 [L]
</IfModule>

ممنون میشم راهنمایی کنید با htaccess چطوری بهتر مدیریتش کنم
این درسته الان => www.mysite.com/about
ولی اینم متاسفانه درسته => www.mysite.com/public/about که در واقع باید بره به abort 404


ثبت پرسش جدید
Alimotreb
تخصص : کانفیگ سرور و برنامه نویس
@Alimotreb 6 سال پیش مطرح شد
0

سلام

ببینید روش اول خب روش استاندارد و اصولی هست
ولی برای روش دومتون

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

    RewriteEngine On

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]

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

این رو توی همون htaccess که توی پوشه پابلیک قرار بدید
مشکلتون رفع میشه


soheil
@soheil.sam 6 سال پیش مطرح شد
0

ممنون از پاسختون
ولی شما تست کردید این رو ؟
من تو htaccess در public_html کدم رو نوشم که ریکوست ها میره به پابلیک نه htaccess تو public !!

در واقع public/htaccess همان دیفالت لاراول است
و اینکه در public_html/htaccess من کد زیر را نوشتم که الان داره کار میکنه

<IfModule mod_rewrite.c>
   RewriteEngine On
   RewriteRule ^(.*)$ public/$1 [L]
</IfModule>

ولی سوال چیز دیگه بود !

سوال

این درسته الان => www.mysite.com/about

  • ولی اینم درسته(که نباید باشه) => www.mysite.com/public/about که در واقع باید بره به abort ۴۰۴

soheil
@soheil.sam 6 سال پیش مطرح شد
0

کسی نمیدونست این مورد ؟


Alimotreb
تخصص : کانفیگ سرور و برنامه نویس
@Alimotreb 6 سال پیش مطرح شد
0

سلام
@soheil.sam

یه بار دیگه دقیق تر و واضح تر کاری که میخوایید کنید رو شرح بدید ، تا بتونیم راهنمایی دقیق تری کنیم


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام