Регулярное выражение слизня перед другим словом - PullRequest
0 голосов
/ 22 мая 2018

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

Я хочу, чтобы 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.

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

1 Ответ

0 голосов
/ 22 мая 2018

Так как правила переопределяли друг друга, обмен всех их (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]
...