Почему я получаю 404 ответа при переписывании, если htaccess и Laravel выглядят нормально?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Почему я получаю 404 ответа при переписывании, если htaccess и Laravel выглядят нормально?

Сообщение Anonymous »

У меня возникла проблема с внутренней перезаписью с помощью apache/htaccess и Laravel 5.1. Сценарий довольно прост: в моем приложении работают несколько маршрутов, которые необходимо переписать на более человечные, SEO и удобные для клиентов URL-адреса. Мой первоначальный подход заключался в том, чтобы просто переписать их в htaccess, как я делал много раз.
Однако проблема возникает, когда я пытаюсь это сделать, и это вообще не работает, например, если у меня есть URL-адрес www.example.org/myroute/id и я хочу переписать его на www.example.org/dummy-dummy-dummy-id.html
Обычно я бы сделал:

Код: Выделить всё

RewriteRule ^dummy-dummy-dummy-(\w+)\.html /myroute/$1
Однако, когда я следую этому шаблону в этом проекте Laravel, я получаю ошибку 404, я проводил тесты в течение нескольких дней, и не имеет значения, что делать, он всегда выдает вам ошибку 404, если не используется флаг [R], который перенаправляет запрос наружу вместо нужного мне внутреннего поведения.
Я использовал dd() в AppServiceProvider, чтобы просмотреть детали запроса фреймворк получает и его URI get всегда является дружественным (поэтому внутреннее перенаправление не достигает index.php). Я просматривал журналы отладки mod_rewrite и похоже, что он работает нормально, сопоставляя дружественный URL-адрес и выполняя внутреннюю перезапись, но он никогда не достигает framework.
это полный htaccess:

Код: Выделить всё


Options -MultiViews


php_value upload_max_filesize 30M
php_value post_max_size 6M

RewriteEngine On

RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} !^local\.
RewriteCond %{HTTP_HOST} !^beta\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]

# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]

RewriteRule ^dummy-dummy-dummy-(\w+)\.html /myroute/$1

# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

ПРИМЕЧАНИЕ. Я знаю, что могу реализовать дружественные маршруты прямо в файле маршрутов Laravel, но не понимаю, почему это не работает, поэтому хотел бы это выяснить.< /п>

Подробнее здесь: https://stackoverflow.com/questions/401 ... avel-looks
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»