Я делаю сайт писателя и хочу продемонстрировать несколько книг, а затем отрывки.
Я хочу, чтобы 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 добавил некоторые детали. Я пытался изменить порядок, как вы сказали, но результат был тот же.
@arkascha, первое правило следует тому же идеалу, что и предпоследнее. Поменяв все правила 1-2-3 на 3-2-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]
А "не беспокойтесь" означает какие? Вы получаете сообщение об ошибке? Который? Клиент зависает? Сколько? Получаете лживый ответ? Который? Взрывается ли вселенная? Мы не можем угадать, вам нужно рассказать нам.