Пожалуйста, у меня возникли проблемы с удалением файла index.php в
маршруты для моих приложений Laravel.
У меня не было успеха исправить это. Когда я использую IP-адрес сервера, все работает нормально, но когда я использую имена поддоменов, они работают для /, но для других маршрутов или URL, таких как / login, я должен добавить /index.php/login, прежде чем он будет работать, иначе он не будет работать. ,
Ниже приведен пример текущих настроек или настроек моего сервера.
Site Works when index.php is used in the URL
Site doesn't work when index.php is removed from the Url
But it works well when i use the IP address directly.
but in this case it serves the laravel application hosted in the second subdomain. I just don't know why
ОСНОВНОЙ САЙТ
domain.com
Apache CONF FILE (это уже отлично работает)
<VirtualHost *:80>
ServerAdmin admin@domain.com
ServerName domain.com
ServerAlias www.domain.com
DocumentRoot /var/www/domain.com/public_html
<Directory /var/www/html/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<IfModule mod_dir.c>
DirectoryIndex index.php index.pl index.cgi index.html index.xhtml index.htm
</IfModule>
RewriteEngine on
RewriteCond %{SERVER_NAME} =www.domain.com [OR]
RewriteCond %{SERVER_NAME} =domain.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
ПЕРВЫЙ ПОДВОДНОЙ САЙТ APACHE CONF:
test1.domain.com
/ вар / WWW / test1.domain.com / public_html
// APACHE CONF FILE
/ и т.д. / apache2 / сайты-доступные / test1.domain.com.conf
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName test1.domain.com
ServerAlias www.test1.domain.com
DocumentRoot /var/www/test1.domain.com/public_html
<Directory /var/www/test1.domain.com/public_html/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<IfModule mod_dir.c>
DirectoryIndex index.php index.pl index.cgi index.html index.xhtml index.htm
</IfModule>
RewriteEngine on
RewriteCond %{SERVER_NAME} =test1.domain.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
//. Htaccess для test1.domain.com
IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
ВТОРОЙ ПОДДОМИННЫЙ САЙТ APACHE CONF:
test2.domain.com
/var/www/test2.domain.com/public_html
/ APACHE CONF FILE
/etc/apache2/sites-available/test2.domain.com.conf
<VirtualHost *:80>
ServerAdmin admin@test2.domain.com
ServerName test2.domain.com
ServerAlias test2.domain.com
DocumentRoot /var/www/test2.domain.com/public_html
<Directory /var/www/test2.domain.com/public_html/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<IfModule mod_dir.c>
DirectoryIndex index.php index.pl index.cgi index.html index.xhtml index.htm
</IfModule>
RewriteEngine on
RewriteCond %{SERVER_NAME} =test2.domain.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
.htaccess
test2.domain.com Конфигурация файла htacess
Опции -MultiViews -Indexes
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]
Окружающая среда
Ubuntu 16.04
Server PHP 7.2
Laravel Version 5.4.30
РЕЗУЛЬТАТ ВСЕГО ЭТИХ
domain.com //WORKS
test1.domain.com // WORKS
but test1.domain.com/login // Does'nt work
instead test1.domain.com/index.php/login // works
test2.domain.com // WORKS
but test2.domain.com/login // Does'nt work
instead test2.domain.com/index.php/login // works
but I realized that
the Ip address works well without the need for index.php
http://server-ip-address // works but serves the app in test2.domain.com
http://server-ip-address/login // also Works well which is what I expect in the two subdomain test1.domain.com and test2.com
ЗАПРОС ПОЖАЛУЙСТА
Мне нужно избавиться от необходимости использовать index.php в маршруте.
Пожалуйста, любая идея приветствуется.
Возможно, свежие Глаза помогут мне определить способы исправить это.
ИССЛЕДОВАНИЯ, КОТОРЫЕ Я СДЕЛАЛ
Я уже пробовал следующие ссылки. все еще трудно выяснить, что не так, чтобы исправить это.
htaccess для домена и субдомена с laravel
htaccess для домена и субдомена с laravel
виртуальный хост apache и «динамические» домены
Настройка корневого документа для проекта Laravel на виртуальном хосте Apache
виртуальный хост apache и «динамические» домены
СНОВА. ИСПРАВЛЕНИЕ Для устранения необходимости включать index.php в МАРШРУТ Web-ПРИЛОЖЕНИЯ. СПАСИБО ЗА ПРЕДЕЛА