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

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

Домашняя страница разрешается очень хорошо, так как у меня есть корневой каталог в конфигурации 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 исправлен

1 ответ

Ваша проблема - первый набор переписываний, а именно:

RewriteCond %{REQUEST_URI} !public/

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

Другие вопросы по тегам