Мне не удается заставить работать любую маршрутизацию Laravel, кроме базового URL и файлов в папке /site/public/
.
http://testurl/
(устанавливается через Apache vhost) работает и загружает домашнюю страницу.
http://testurl/blog
) не работает (возвращает 404), но мне бы хотелось.
Странно, http://testurl/index.php/blog
работает .
Я гуглил в сотне разных мест и просмотрел бесчисленное множество вопросов StackOverflow и перепробовал все, что смог найти, но ничего не помогло.
Как я могу это исправить?
Информация о конфигурации
Я использую Laravel 5.7 на Apache 2.4.29 и PHP 7.1.9 на MacOSX 10.13.4.
Я включил модуль перезаписи в httpd.conf
примерно так:
LoadModule rewrite_module libexec/apache2/mod_rewrite.so
...
<Directory />
AllowOverride all
Require all denied
</Directory>
Мой httpd-vhosts.conf
настроен так:
<VirtualHost *:80>
DocumentRoot "/Library/WebServer/Documents/site/public"
ServerName testurl
<Directory /Library/WebServer/Documents/site/public>
Order Allow,Deny
Allow from all
</Directory>
</VirtualHost>
.htaccess
в папке /site/public/
выглядит следующим образом (я бы не хотел это менять):
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
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]
</IfModule>
My config/app.php
имеет следующую строку:
'url' => env('APP_URL', 'http://testurl'),
И последнее, но не менее важное: web.php
выглядит так:
<?php
Route::get('/', function () {
return view('home');
});
Route::get('blog', function () {
return view('blog');
});
Если есть что-то, чего мне не хватает (или что я могу попробовать), пожалуйста, дайте мне знать.
Желательно, чтобы я хотел решения, которые не требуют от меня изменения кода Laravel при развертывании на сервере.
Спасибо за помощь!