У меня есть ядро Ubuntu 14.04. Я устанавливал приложение Laravel на этом сервере. После установки я попытался открыть каталог root.
sudo nano /etc/apache2/sites-available/000-default.conf
У меня есть только эти параметры в файле
<VirtualHost *:80>
# The ServerName directive sets the request scheme, hostname and port t$
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
#ServerName www.example.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/public/
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
Я изменил корень документа на
DocumentRoot /var/www/html/public/
Теперь, когда я пытался получить доступ к моему приложению Laravel, через 123.xxx.xxx.xxx/
он показывает домашнюю страницу и хорошо работает. Он также получает всю переменную GET. Например: 123.xxx.xxx.xxx?type=wefwef
Но когда я перехожу к другим ссылкам, таким как 123.xxx.xxx.xxx/login
, это дает мне ошибку
Not Found
The requested URL /login/ was not found on this server.
Apache/2.4.7 (Ubuntu) Server at 104.236.234.85 Port 80
У меня есть route.php, хорошо работающий на localhost. Но не на этом сервере. Пожалуйста, помогите мне.
Похоже, вы должны включить .htaccess
, добавив это в свой vhost:
<Directory /var/www/html/public/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
Если это не работает, убедитесь, что у вас включен mod_rewrite.
Не забудьте перезапустить apache после внесения изменений! (service apache2 restart
)
service apache2 restart
. Большое спасибо :)
Сначала включите a2enmod rewrite
затем перезапустите apache
/etc/init.d/apache2 restart
Я решил, выполнив следующее: Проверьте, есть ли модуль под названием rewrite.load в вашем apache по адресу:
cd /etc/apache2/mods-enabled/
Если он не существует, выполните следующую выдержку:
sudo a2enmod rewrite
В противном случае измените файл конфигурации Apache, чтобы консолидировать использование "дружественного URL".
sudo nano /etc/apache2/apache2.conf
Найдите следующий код в редакторе:
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
Изменить на:
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
После этого перезапустите сервер Apache через:
sudo /etc/init.d/apache2 restart
Убедитесь, что включен mod_rewrite.
restart apache
и очистите файлы cookie вашего браузера, чтобы снова прочитать его .htaccess
слишком поздно.. но на благо вы можете редактировать файл .htaccess прокомментируйте эту строку
# RewriteRule ^ index.php [L]
В файле httpd.conf вам нужно удалить #
#LoadModule rewrite_module modules/mod_rewrite.so
после удаления строки # будет выглядеть так:
LoadModule rewrite_module modules/mod_rewrite.so
И перезапуск Apache
123.xxx.xxx.xxx/index.php/login
ли123.xxx.xxx.xxx/index.php/login
?