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

3 ماه پیش
توسط حمید آپدیت شد
محمد ( 768 تجربه )
3 سال پیش

سلام، من فایل‌های پروژه را روی هاست آپلود کردم و از میان همه روت‌ها فقط روت '/' شناسایی می‌شود و بقیه روت‌ها شناسایی نمی‌شوند و ارور 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');

});

محمد ( 768 تجربه )
3 سال پیش

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

Ali Hamrani ( 1208 تجربه )
2 سال پیش

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

حسام موسوی ( 365256 تجربه )
2 سال پیش
تخصص : طراح و برنامه نویس

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

محمد ( 768 تجربه )
2 سال پیش

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

meysamDarkcoder:) ( 70 تجربه )
1 سال پیش
تخصص : برنامه‌نویس

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

امیر ( 8190 تجربه )
10 ماه پیش
تخصص : توسعه دهنده لاراول - فلاتر

می بایست ورژن 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
حمید ( 5170 تجربه )
3 ماه پیش
تخصص : برنامه نویس

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

برای ارسال پاسخ باید وارد سایت شوید