2015-09-19 59 views
2

有没有更好的方法来做到这一点?更好的实现RewriteRule的方法?

RewriteEngine On 

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

RewriteRule ^featured/([^/]+)$ /pages/featured.php?game=$1 [L] 
RewriteRule ^featured/([^/]+)/$ /pages/featured.php?game=$1 [L] 
RewriteRule ^featured/ /pages/featured.php [L] 
RewriteRule ^featured /pages/featured.php [L] 

例如:我想用户这个页面上

的https://www.example.com/featured/tetris/

重写这个页面

https://www.example.com/pages/featured.php?game = tetris

和尾部斜线无关紧要。

+0

它目前行为不当吗? (你可以通过选择'/?'尾部斜线来减少规则。) – mario

+0

@mario当我有很多页面时,它会变得杂乱,我如何可选择? – user3302325

+0

用'?'。请注意,RewriteCond只守卫第一个RewriteRule。 – mario

回答

2

您可以压缩您的规则为:

#   optional /gamename slash 
         ↓   ↓ 
RewriteRule ^featured(?:/([^/]*)/?)?$ pages/featured.php?game=$1 [L] 

您会收到一个空$_GET["game"]请求是否只是/featured/featured/这样。但是,它将填入/featured/whatever/

相关问题