Amirex
5 سال پیش توسط Amirex مطرح شد
14 پاسخ

درسترسی به پوشه public لاراول در url

سلام دوستان
من یک پروژه لاراولی خریدم و الان میخوام برای خودم ویرایشش کنم و برای این ویرایش باید یک سری کتاب خونه ها در پوشه public ایجاد کنم و درون کد های blade به اون کتابخونه ها دسترسی داشته باشم ولی وقتی فایل ها رو درون اون پوشه قرار میدم و مسیرشون رو درون url وارد میکنم به من خطای 404 میده و میگه شما اجازه دسترسی ندارید.
ولی فایل هایی که خودش درون اون پوشه public ریخته به راحتی باز میشه و هیچ مشکلی نداره یعنی انگار برای فایل های جدیدی که به این پوشه اضافه میشن دسترسی نمیده.

فایل htaccess داخل فایل public

`
<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 ^ index.php [L]

</IfModule>
`


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

سلام مجدد
@amirex128

ببینید اصلا شما هیچ کاری به هلپر فانکشن و این چیزا نداشته باشید در قدم اول
اوکی؟
این مسیر رو برید جلو تست بگیرید
تو پوشه پابلیکتون یه پوشه بسازید به اسم pp
اوکی؟
توی اون یه فایل css یا جاوا اسکریپت بزارید
به اسم pp.js یا pp.css
اوکی؟

حالا توی blade هاتون و صفحاتتون
هر جا خواستید اینا رو پیوست کنید

<script src="/pp/pp.js"></script>

<link href="/pp/pp.css" rel="stylesheet">

راحت از این روش برای لود فایل هاتون و پیوستش به صفحات استفاده کنید
چند بار تست بگیرید
برای رفرش هم از Ctrl+ f5 استفاده کنید که کش هم نداشته باشید.
این دیگه ساده ترین راه هست.


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

سلام
@amirex128

ببینید کد htaccess که

<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 ^ index.php [L]
</IfModule>

این هست

اگر هم ویرایشی میخوایید کنید
کتابخانه CSS یا جاوا اسکریپت دارید میخوایدی اضافه کنید
برید تو ویوو و فایل blade مورد نظر رو باز کنید و تگش رو بزنید

اگر هم جایی ارور دارید بگذارید تا دقیق تر راهنمایی کنیم


Amirex
@amirex128 5 سال پیش مطرح شد
0

الان شما میگید من این کد htaccess رو قرار بدم درون پوشه public ?
ببینید من این کد ها رو درون فایل blade گذاشتم تا کتابخونه ها لود بشه ولی ارور 404 به من میده در صورتی که مسیر فایل ها درسته ولی فایل هایی که من اضافه کنم رو نمیشناسه و فقط فایل های خودش رو میشناسه

<!-- jQuery -->
    <script src="{{asset('theme_sec/js/jquery-2.0.0.min.js')}}" type="text/javascript"></script>

    <!-- Bootstrap4 files-->
    <script src="{{asset('theme_sec/js/bootstrap.bundle.min.js')}}" type="text/javascript"></script>
    <link href="{{asset('theme_sec/css/bootstrap.css')}}" rel="stylesheet" type="text/css">

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

مجدد سلام
@amirex128

یه مثال میزنم براتون
تو پوشه public
یه پوشه هست admin
من فایل جاوا اسکریپت رو به این شکل متصل میکنم

<script src="/Admin/js/sweetalert.min.js"></script>

روش زیاده
از تابع

{{url('/'')}}

میتونید کمک بگیرید

چند بار رفرش کنید تست بگیرید دستتون میاد ، من خودم از روش اول استفاده میکنم


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 5 سال پیش آپدیت شد
0

@amirex128
خطای ۴۰۴ (Not Found) ٬ به این اشاره میکنه که فایل وجود نداره و یا آدرس هارو اشتباهی وارد کردین.

از ۲ تابع هلپر لاراول میتونید استفاده کنید:
()base_path
()public_path

$path = base_path('vendor/bin');

$path = public_path('css/app.css');

Amirex
@amirex128 5 سال پیش مطرح شد
0

دوستان منظور بنده را متوجه نشدن مثل این که

من میگم به هیچ عنوان نمیشه به اون قایل های درون public دسترسی داشت چه از طریق متد url چی مند asset چی متد public_path فرقی نداره و حتی از طریق مرورگر هم ادرس را وارد میکنیم 404 میده یعنی کلا دسترسی به این فایل های public مسدود شده بجز فایل هایی که از قبل برنامه نویس اصلی اون ها رو گذاشته


Amirex
@amirex128 5 سال پیش مطرح شد
0

دوستان خطایی که میده وقتی کتابخونه ها رو میخوای باز کنی یا بخونی

responsive.css:1 Failed to load resource: the server responded with a status of 404 (Not Found)
bootstrap.css:1 Failed to load resource: the server responded with a status of 404 (Not Found)
fontawesome-all.min.css:1 Failed to load resource: the server responded with a status of 404 (Not Found)
owl.carousel.min.css:1 Failed to load resource: the server responded with a status of 404 (Not Found)
ui.css:1 Failed to load resource: the server responded with a status of 404 (Not Found)
owl.theme.default.css:1 Failed to load resource: the server responded with a status of 404 (Not Found)
responsive.css:1 Failed to load resource: the server responded with a status of 404 (Not Found)

Amirex
@amirex128 5 سال پیش مطرح شد
-1

دوستان خطایی که میده وقتی کتابخونه ها رو میخوای باز کنی یا بخونی

responsive.css:1 Failed to load resource: the server responded with a status of 404 (Not Found)
bootstrap.css:1 Failed to load resource: the server responded with a status of 404 (Not Found)
fontawesome-all.min.css:1 Failed to load resource: the server responded with a status of 404 (Not Found)
owl.carousel.min.css:1 Failed to load resource: the server responded with a status of 404 (Not Found)
ui.css:1 Failed to load resource: the server responded with a status of 404 (Not Found)
owl.theme.default.css:1 Failed to load resource: the server responded with a status of 404 (Not Found)
responsive.css:1 Failed to load resource: the server responded with a status of 404 (Not Found)

علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 5 سال پیش مطرح شد
0

اگر به کامند لاین در سرور دسترسی دارید٬ با لاراول میکس امتحان کنید


Amirex
@amirex128 5 سال پیش مطرح شد
0

به کامند لاین دسترسی ندارم
یعنی کسی نیست راه حلی برای این مشکل بدونه !!!


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

سلام مجدد
@amirex128

ببینید اصلا شما هیچ کاری به هلپر فانکشن و این چیزا نداشته باشید در قدم اول
اوکی؟
این مسیر رو برید جلو تست بگیرید
تو پوشه پابلیکتون یه پوشه بسازید به اسم pp
اوکی؟
توی اون یه فایل css یا جاوا اسکریپت بزارید
به اسم pp.js یا pp.css
اوکی؟

حالا توی blade هاتون و صفحاتتون
هر جا خواستید اینا رو پیوست کنید

<script src="/pp/pp.js"></script>

<link href="/pp/pp.css" rel="stylesheet">

راحت از این روش برای لود فایل هاتون و پیوستش به صفحات استفاده کنید
چند بار تست بگیرید
برای رفرش هم از Ctrl+ f5 استفاده کنید که کش هم نداشته باشید.
این دیگه ساده ترین راه هست.


Amirex
@amirex128 5 سال پیش مطرح شد
0

Alimotreb@
دوست عزیز بنده چند بار عرض کردم که فایل ها اصلا به هیچ عنوان لود نمیشن از public و دسترسی به آن ها مسدود شده به نظرم
شما چه از این

<script src="/pp/pp.js"></script>

<link href="/pp/pp.css" rel="stylesheet">

طریقی که گفتید وصل بشیم به فایل ها توی روت اصلی public
یا چه از طریق هلپر فانکشن
و یا چه از طریق این که آدرس را به این صورت localhost:8000//pp/pp.css مستقیم وارد مرورگر کنیم
به ما پیام 404 میدهد
یا اگر به این صورتی که شما گفتید کار کنیم این پیام را در کنسول مرورگر میدهد.

owl.carousel.min.css:1 Failed to load resource: the server responded with a status of 404 (Not Found)

این چیزی که دارم میگم خیلی واضح هستش

احتمال دارد که نویسنده برنامه کدی را نوشته باشد که تنها به فایل هایی که خودش از قبل مشخص کرده بتوانیم در url دسترسی داشته باشیم ؟؟؟
من حتی این مورد را هم توی هاست دیگر و لوکال هاست هم امتحان کردم به نظر فایل public اصلا قفل شده


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

سلام مجدد
@amirex128

اون htaccess رو که بهتون دادم رو باید توی پابلیک بزارید
دسترسی پوشه پابلیک هم 755 توی هاست اگر هستید
644 نباشه
و تست بگیرید

مسیر بقیه پوشه های لاراول کجاست؟
همه در کنار همیدگه به صورت استاندارد هست؟


Amirex
@amirex128 5 سال پیش آپدیت شد
0

@Alimotreb

بنده دوتا htaccess دارم

یکی برای پوشه public که به این صورته :


<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 ^ index.php [L]
</IfModule>

یکی هم برای روت اصلی خود پروژه لاراول هست که کاربر رو هدایت میکنه به public تا صفحه بالا بیاد که به این صورته :

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?basagan.com$
RewriteCond %{REQUEST_URI} !^/public/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /public/$1
RewriteCond %{HTTP_HOST} ^(www.)?basagan.com$
RewriteRule ^(/)?$ public/index.php [L]
RewriteEngine On
   RewriteRule ^(.*)$ public/$1 [L]

دستررسی های cpanel رو هم همون اول از طریق fileZila به 755 تغییر دادم

و مسیر پوشه های دیگه لاراول هم دقیق سر جای خودش هست چون این اسکریپتی که بنده خریدم یک اسکریپت حرفه ای هستش که 200 دلار قیمتش بود و وقتی پروژه رو آپلود میکنم داخل هاست بار اولی که دامنه رو توی مرورگر باز میکنم صفحه نصب میاد که پیکر بندی لاراول رو خودشانجام میده و تموم میشه و سایت بالا میاد و تمامی بخش هاش و امکاناتش به درستی کار میکنه و تنها مشکلی که داره اینه که ما اجازه نداریم هیچ فایلی در مسیر public بسازیم و اگر به سازیم از طریق مرورگر به اون نمیتونیم دسترسی داشته باشیم یا حتی متد های خود لاراول


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

سلام مجدد خدمت شما دوست عزیز
@amirex128

ببینید 2 تا Htaccess که به نظرم اوکی نیست
1 دونه تو پوشه پابلیک اوکیه!
این مورد اول
مورد دوم در نحوه آپلود پروژه شما هست تو سی پنل
یه نمونه داریم که همه فایل هارو میریزن تو پوشه public_html خود سی پنل
یه مورد هم داریم که فایل های پوشه پابلیک لاراول رو میریزن توی public_html و بقیه فایل های لاراول رو یه مسیر قبل تر میریزن که این استاندارد هست و وقتی هم که این کار رو انجام دادن
فایل Index.php رو مسیراش رو تغییر میدن

شما htaccess استاندارد لاراول رو در پوشه پابلیک لاراول که الان توی public_html هست نگه دارید و بزارید باشه
بقیه موارد لاراول رو ( منظورم بقیه فایل ها و پوشه ها هست ) این هارو به یه مسیر قبل تر ببرید و فایل index.php رو مسیراشو اوکی کنید
تا به حالت اوکی و استاندارد اول تبدیل بشه
بعد از اون یه روت جدید بسازید برای تست
بفرستید به یه کنترلر تست
از کنترلر یه ویوو رو برگردونید
توی اون ویوو فایل css یا جاوا اسکریپتی رو فراخوانی کنید
به هیچ وجه نباید مشکلی باشه!

لاراول جایی نداره که بخواد قفل کنه فایلی رو یا پوشه ای رو ....!

شما اول از نحوه اپلود پروژه و سطح دسترسی پوشه ها و استاندارد ها اطمینان پیدا کنید


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

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