mod_rewrite в .htaccess - PullRequest
       23

mod_rewrite в .htaccess

1 голос
/ 20 июня 2010

Привет всем, как я могу уменьшить это:

www.example.com/index.php?page=viewblog&category=awesome

до этого:

www.example.com/blog/awesome

Выше перечислены все сообщения в блоге в этой категории, но я также хочу область для добавления заголовка сообщения в конце, например:

www.example.com/index.php?page=viewblog&category=awesome&post=why-trees-are-green

И это нужно сократить до:

www.example.com/blog/awesome/why-trees-are-green

Есть идеи, кто-нибудь? Заранее спасибо:)

Ответы [ 2 ]

2 голосов
/ 20 июня 2010
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f    
RewriteRule blog/([^/]+)/?$ index.php?page=viewblog&category=$1 [L]
RewriteRule blog/([^/]+)/([^/]+)/?$ index.php?page=viewblog&category=$1&post=$2 [L]

Условие гарантирует, что запрошенный URL-адрес не является реальным файлом, который вы хотите обслуживать (CSS, изображения и т.http://yourserver.com/blog/whatever до http://yourserver.com/index.php?page=viewblog&category=whatever

Второй перезапишет http://yourserver.com/blog/whatever/whenever до http://yourserver.com/index.php?page=viewblog&category=whatever&post=whenever

Если вам нужно больше уровней, добавьте больше правил соответственно.

0 голосов
/ 20 июня 2010

Как то так?

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^./]+)/([^./]+)$ index.php?page=view$1&category=$2 [L]
RewriteRule ^([^./]+)/([^./]+)/([^./]+)$ index.php?page=view$1&category=$2&post=$3 [L]
...