2015-09-19 4 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

В какой-то мере это неправильно? (Вы можете уменьшить правила, добавив опцию '/?' Trailing slash.) – 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/.

Смежные вопросы