محمد
7 سال پیش توسط محمد مطرح شد
8 پاسخ

شناخته نشدن روت‌ها بعد از آپلود روی هاست

سلام، من فایل‌های پروژه را روی هاست آپلود کردم و از میان همه روت‌ها فقط روت '/' شناسایی می‌شود و بقیه روت‌ها شناسایی نمی‌شوند و ارور 404 خود سرور نمایش داده می‌شود. یعنی اولا اینکه روت‌ها با اینکه وجود دارند و روی لوکال درست کار می‌کنند روی هاست شناسایی نمی‌شوند و ثانیا اینکه من صفحه ارور 404 گذاشتم توی فایل‌ها ولی ارور 404 خود سرور نمایش داده می‌شود.
من آدآن دامین استفاده کردم و با استفاده از متدی هم که آقای موسوی گفتند public روی آد آن تنظیم کردم. در حال حاضر فقط یک روت شناسایی می‌شود یعنی تابع از کنترلر فراخوانی شده و ویو مورد نظر نمایش داده می‌شود.

Route::get('/', 'HomeController@index');

// Admin
Route::group(['namespace' => 'Admin','middleware' => ['auth:web','checkAdmin'], 'prefix' =>'admin'], function (){
$this->get('/panel', 'PanelController@index');
$this->resource('orders','OrderController');
$this->resource('translators','TranslatorController');

$this->group(['prefix' => 'users'],function (){
    $this->get('/','UserController@index');
    $this->get('/{user}/destroy','UserController@destroy')->name('user.destroy');

});

});

  Route::group(['middleware' => 'auth:web'],function (){

    $this->group(['prefix'=>'/user/panel'],function (){

    $this->get('/','UserPanelController@index')->name('user.panel');
    $this->get('/history','UserPanelController@history')->name('user.panel.history');
});

});

Route::group(['namespace' => 'Auth'], function (){  

// Authentication Routes...
$this->get('login', 'LoginController@showLoginForm')->name('login');
$this->post('login', 'LoginController@login');
$this->get('logout', 'LoginController@logout')->name('logout');

 // Registration Routes...
 $this->get('register', 'RegisterController@showRegistrationForm')->name('register');
 $this->post('register', 'RegisterController@register');

 // Password Reset Routes...
 $this->get('password/reset', 'ForgotPasswordController@showLinkRequestForm')->name('password.request');
 $this->post('password/email', 'ForgotPasswordController@sendResetLinkEmail')->name('password.email');
 $this->get('password/reset/{token}', 'ResetPasswordController@showResetForm')->name('password.reset');
 $this->post('password/reset', 'ResetPasswordController@reset');

});


ثبت پرسش جدید
محمد
@freetayyeb 7 سال پیش آپدیت شد
1

فایل .htaccess رو که در مسیر public قرار می‌دهم به نظر می‌رسد روت ها شناسایی می‌شوند اما این ارور را دریافت می‌کنم
RecursiveDirectoryIterator::hasChildren(): open_basedir restriction in effect
File(/home/xxx/access-logs) is not within the allowed path(s):


Ali Hamrani
@ali.hamrani 7 سال پیش مطرح شد
0

منم دقیقا همین مشکل رو دارم


حسام موسوی
تخصص : طراح و برنامه نویس
@hesammousavi 7 سال پیش مطرح شد
2

برای اون دسته از دوستانی که مدیریت کننده سرورشون nginx هست باید تغییراتی جداگانه در فایلی انجام بدن حالا نمیدونم سرورتون nginx هست یا نه اما اگر ارور مربوطه که فرستادید رو داره روی سرور apache میده یه نگاه به ورژن php بندازید حتما و اینکه به پشتیبانی سرورتون بگید دسترسی به تابع open_basedir رو باز کنه البته در مورد اول بارها به این موضوع برخورد کردم و احتمال میدم همون اولی باشه


محمد
@freetayyeb 7 سال پیش مطرح شد
1

فک کنم مشکل از ورژن php باشه که برای من حل شد


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

سلام. اگه مشکل از ورژن php باشه سایت موقع بالا میاد ارور میده. همچنین لاراول 5.8 با php version 7.2 سازگار هست.
اما وقتی فقط روت اصلی باز میکنه احتمال زیاد فایل htaccess توی پوشه public احتمالا آپلود نشده، لطفا اول چک کنین احتمال زیاد واسه htaccess هست


امیر
تخصص : توسعه دهنده لاراول - فلاتر
@amirali 5 سال پیش مطرح شد
5

می بایست ورژن php ۷.۲ به بالا بزارید و 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>

# php -- BEGIN cPanel-generated handler, do not edit
# Set the “ea-php72” package as the default “PHP” programming language.
<IfModule mime_module>
  AddHandler application/x-httpd-ea-php72 .php .php7 .phtml
</IfModule>
# php -- END cPanel-generated handler, do not edit

حمید
تخصص : برنامه نویس
@hamidsahragard 5 سال پیش مطرح شد
1

@hesammousavi
من هم این مشکل رو دارم و فایل های پروژه لاراولم رو به سرور مجازی منتقل کردم که روی این سرور دایرکت ادمین و nginx نصبه.
فایل های پروژه رو داخل یه پوشه به اسم my_project قرار دادم که این پوشه رو داخل public_html گذاشتم. داخل روت پوشه my_project محتویات پوشه public لاراول رو قرار دادم و بقیه رو در یه پوشه به اسم فایل گذاشتم و آدرس های فایل ایندکس هم درست کردم. روی لوکال که کار می کنم مشکلی با آدرسها ندارم و صفحات پروژه لاراول برام باز میشن ولی روی سرور پیغام 404 میاد و بجز روت اصلی هیج روت دیگه ای شناسایی نمیشه.
می خواستم بدونم فایل htaccess رو برای وب سرور nginx چطور تنظیم و کدنویسی کنم تا مشکلم برطرف بشه.
تشکر. ببخشید که منم طولانی شد


farhad_dll
@farhaddll1993 4 سال پیش مطرح شد
2

سلام دوستان . بنده هم این مشکل رو داشتم.
یکی از اصلی ترین دلایل این مشکل اینه که ما توی ویندوز داریم پروژمونو میسازیم . و سیستم ویندوز نسبت به شناسایی حروف بزرگ و کوچک حساس نیست.
ولی وقتی همین پروژه رو میبریم توی سرور واقعی و باتوجه به اینکه هاست لاراولی باید لینوکس باشه و لینوکس نسبت به حروف کوچک و بزرگ حساسه پس باید توی صدا کردن روت ها دقیق همونی که تعریف شده رو صدا بزنیم.
بهترین روش اینه همه رو با حروف کوچک تعریف کنیم و صداشون کنیم. خیلی راحت.😍😍😍😍😍


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

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