Ответ 1
Создайте и поместите этот файл .htaccess в свою папку установки laravel.
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} !^public
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
Моя установка laravel работала хорошо вчера, но сегодня я получаю следующую ошибку:
Forbidden
You don't have permission to access / on this server.
Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request.
Кто-нибудь знает, где я ошибаюсь?
Создайте и поместите этот файл .htaccess в свою папку установки laravel.
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} !^public
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
Я встретил ту же проблему, тогда я делаю то же самое, что и решение @lubat, и мой проект работает хорошо.: D Моя конфигурация виртуального хоста:
<VirtualHost *:80>
ServerName laravelht.vn
DocumentRoot D:/Lavarel/HTPortal/public
SetEnv APPLICATION_ENV "development"
<Directory D:/Lavarel/HTPortal/public>
DirectoryIndex index.php
AllowOverride All
Require all granted
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Проверьте конфигурацию виртуального хоста. Для Ubuntu вы можете найти его на /etc/apache 2/sites-available/yourlaravel.conf Это должно быть так:
<VirtualHost *:80>
ServerName yourlaravel.com
DocumentRoot "/path/to/your/laravel/project/public"
ServerAlias *.yourlaravel.com
<Directory "/path/to/your/laravel/project/public">
AllowOverride All
Require all granted
</Directory>
Ключевая строка Require all granted
внутри <Directory>
.
Надеюсь, что это поможет!
Вы пытались изменить файл .htaccess, который предложил laravel, если по умолчанию он не работает? У меня была подобная проблема и она была изменена на
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
и он создан:)
Для тех, кто использует Mamp или Mamp pro:
Open MAMP Pro
Click on "Hosts"
Click on "Extended" (UPDATE: Only if you are using MAMP Pro 3.0.6)
Check "Indexes"
Click "Save"
That’s it! Reload your localhost starting page and it should work properly.
Это было решено для меня с файлом по умолчанию public/.htaccess по умолчанию Laravel, добавив дополнительную строку:
Файл /public/.htaccess
остается следующим:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
DirectoryIndex index.php # This line does the trick
# 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}]
</IfModule>
Со мной возникла проблема, связанная с тем, что в папке public_html не было файла index.php. Однако, когда я набрал этот адрес: http://azxcvfj.org/public, он работал (этот адрес является всего лишь примером, который указывает на никуда). Это заставило меня подумать, и в конце концов я решил это, сделав следующее.
Я сделал файл .htaccess в корневой папке приложения (папка public_html) с этим содержимым:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ public/index.php [L]
</IfModule>
И это сработало. С этим файлом вы в основном говорите серверу (Apache), что всякий раз, когда кто-то пытается получить доступ к общедоступной папке html (http://azxcvfj.org), кто-то, кто перенаправляется, перенаправляется на http://azxcvfj.org/public/index.php
В вашем VirtualHost напишите DocumentRoot, чтобы он указывал на ваше приложение Laravel в ваших домашних каталогах. Кроме того, вы должны добавить каталог, показанный ниже, со своим собственным путем:
<Directory /home/john/Laravel_Projects/links/public/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
Require all granted
</Directory>
На втором этапе вы должны перейти в проект Laravel и выполнить следующую команду.
sudo chmod -R 777 storage bootstrap/cache
В конце перезапустите ваш apache2:
sudo service apache2 restart
Просто добавьте файл .htaccess
в свой корневой путь проекта со следующим кодом для перенаправления в общую папку:
.htaccess
## Redirect to public folder
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ public/ [L]
RewriteRule (.*) public/$1 [L]
</IfModule>
Очень просто, но работайте на моем сервере.
С уважением!
Для меня это было только потому, что у меня была папка в моем public_html, названная так же, как и этот маршрут!
поэтому, пожалуйста, проверьте, нет ли папки с адресом этого маршрута!
надеюсь, будет полезно
Во-первых, обновите конфигурацию виртуального хоста;
<VirtualHost *:80>
ServerName example.com
DocumentRoot /var/www/html/example-project/public
<Directory /var/www/html/example-project/public/>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Затем измените разрешение и право собственности на актив, как показано ниже.
$ sudo chgrp -R www-data /var/www/html/example-project
$ sudo chmod -R 775 /var/www/html/example-project
Скорее всего, если бы все ответы выше не работали для вас, и вы используете проверку запроса, вы забыли поставить авторизацию в true.
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class EquipmentRequest extends FormRequest {
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize() {
/*******************************************************/
return true; /************ THIS VALUE NEEDS TO BE TRUE */
/*******************************************************/
}
/* ... */
}
У меня была такая же проблема, и я создал файл .htaccess
, чтобы исправить эту проблему еще несколькими улучшениями. Вы можете использовать его как есть, просто скачайте его из Github Gist и измените имя файла "public/index.php" на "public/app. php" и посмотреть, как это работает!:)
Для меня это просто вызывало route()
по именованному маршруту, который я не создал/не создал неправильно. Это вызвало страницу с недопустимыми ошибками.
Перезапуск веб-сервера допустил правильные действия! ошибка для отображения:
Маршрут [my-route-name] не определен.
Исправлена ошибка с именем маршрута ->name('my-route-name')
.
Это на Laravel 5.5 и с помощью wampserver.
Это решение моей проблемы, добавив эту строку:
DirectoryIndex index.php
У меня была проблема с версией URL-адреса, отличной от www - метод PUT не работал. Но при входе на сайт с www. - он отлично работает!
У меня была эта ошибка, и я просто вставил http://127.0.0.1:8000/ прямо в строку url. вы получите ниже, когда вводите: php laravel serve
Я помещал localhost/http://127.0.0.1:8000/, чтобы получить указанную вами ошибку.
В общедоступном /.htaccess редактировать в
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# 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]
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>
В корень проекта добавить файл
Procfile
Содержимое файла
web: vendor/bin/heroku-php-apache2 public/
Перезагрузить проект в Heroku
bash
heroku login
cd my-project/
git init
heroku git:remote -a my project
git add .
git commit -am "make it better"
git push heroku master
heroku open
Проблема заключается в расположении файла индекса (index.php). Вы должны создать символическую ссылку в корне проекта на public/index.php с помощью команды "ln-s public/index.php index. PHP"
Возможно, вы столкнулись с проблемой доступа к файлам. Проверьте файл htacces, изменилось ли оно со вчерашнего дня? Кроме того, если вы делали какие-либо "обновления для композитора" или "оптимизировать", попробуйте упорядочить свою папку проекта laravel для своего имени пользователя.
chown -R yourusername yourlaravelappfolder
РЕДАКТИРОВАТЬ: проблема, возможно, связана с вашими локальными разрешениями на файл, касающимися Vagrant. Попробуйте
set the permissions to the Vagrantfile containing folder to 777