Недавно я переместил веб-приложение, созданное с использованием 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
. Другое исправление - удалить эту перезапись, если она вам действительно не нужна.