Назад | Перейти на главную страницу

Ошибка облачного сервера - файл не существует: / var / www / html / public

Недавно я переместил веб-приложение, созданное с использованием Laravel, на облачный сервер стойки.

Домашняя страница разрешается нормально, так как у меня есть корневой набор в конфигурации apache.

Однако, когда делается запрос к любому из маршрутов, сервер пытается найти фактический файл с именем маршрута. Например:

Если я прошу

www.mywebapp.com/login

Журнал ошибок сервера показывает

File Does Not Exist: /var/www/html/public/login

Часть моей конфигурации apache

<Directory/>
Options FollowSymLinks
AllowOverride None
</Directory>

И мой .htaccess, который находится в общей папке

# Apache configuration file
# http://httpd.apache.org/docs/2.2/mod/quickreference.html

# Note: ".htaccess" files are an overhead for each request. This logic should
# be placed in your Apache config whenever possible.
# http://httpd.apache.org/docs/2.2/howto/htaccess.html

# Turning on the rewrite engine is necessary for the following rules and
# features. "+FollowSymLinks" must be enabled for this to work symbolically.

<IfModule mod_rewrite.c>
    Options +FollowSymLinks
    RewriteEngine On
</IfModule>

# For all files not found in the file system, reroute the request to the
# "index.php" front controller, keeping the query string intact

<IfModule mod_rewrite.c>
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

Это мое первое веб-приложение, поэтому я новичок во всех этих концепциях и не имею формального обучения. Конструктивная критика, пожалуйста. Любая помощь приветствуется.

Изменить 1: файл .htaccess исправлен

Ваша проблема - это первый набор переделок, а именно:

RewriteCond %{REQUEST_URI} !public/

Простое решение - просто переместить все в "общую" папку вместо /var/www/html. Другое исправление - удалить эту перезапись, если она вам действительно не нужна.