Заголовок регулярного выражения перед другим словом

Я делаю сайт писателя и хочу продемонстрировать несколько книг, а затем отрывки.

Я хочу, чтобы URL-адреса выглядели так: site.com/book/name-of-book site.com/book/name-of-book/excerpt

Первую часть мне удалось проделать с этим htacess:

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f

# Remove .php from regular pages
RewriteRule ^([^\.]+)$ $1.php [NC,L]

# Directory style books
RewriteRule ^book/(.*)$ ./book.php?slug=$1

# Directory style books excerpts
RewriteRule ^book/(.*)/excerpt$ ./book-excerpt.php?slug=$1

Моя проблема - вторая часть, так как она не работает, вместо book.php загружен book-excerpt.php.

Я изучаю, как это сделать, но все решения в Интернете, похоже, не работают для меня. Что я делаю неправильно? Первое правило преобладает над вторым? Как я могу это исправить?

А "не беспокойтесь" означает какие? Вы получаете сообщение об ошибке? Который? Клиент зависает? Сколько? Получаете лживый ответ? Который? Взрывается ли вселенная? Мы не можем угадать, вам нужно рассказать нам.

arkascha 22.05.2018 13:49

Скорее всего, проблема заключается в порядке обработки: поскольку предпоследнее правило всегда совпадает, последнее правило никак не может быть применено. Измените их порядок!

arkascha 22.05.2018 13:50

@arkascha добавил некоторые детали. Я пытался изменить порядок, как вы сказали, но результат был тот же.

Bruno Braga 22.05.2018 14:46

@arkascha, первое правило следует тому же идеалу, что и предпоследнее. Поменяв все правила 1-2-3 на 3-2-1, я смог заставить его работать.

Bruno Braga 22.05.2018 14:50
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
4
26
1

Ответы 1

Поскольку правила перекрывали друг друга, их замена (1-2-3 на 3-2-1) заставила их работать.

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f

# Directory style books excerpts
RewriteRule ^book/(.*)/excerpt$ ./book-excerpt.php?slug=$1

# Directory style books
RewriteRule ^book/(.*)$ ./book.php?slug=$1

# Remove .php from regular pages
RewriteRule ^([^\.]+)$ $1.php [NC,L]

Другие вопросы по теме