Ошибка облачного сервера - файл не существует: /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
, Другим исправлением будет удаление этой перезаписи, если она вам действительно не нужна.