正则表达式slug在另一个单词

时间:2018-05-22 11:37:49

标签: php .htaccess slug

我正在创作一个作家的网站,我想展示一些书籍,然后是一些摘录。

我希望网址如下所示: 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 :(得分: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]