Aqui você vai: (note que isto retira o "/" final para variáveis pn
)
RewriteEngine on
RewriteBase /
RewriteRule ^category/(.*)/([0-9]+) index.php?p=/category/$1&pn=$2 [L]
RewriteRule ^category/feed(.*) index.php?p=/category/&f=feed$1 [L]
RewriteRule ^tags/(.*)/([0-9]+)/ index.php?p=$1&pn=$2 [L]
RewriteRule ^search/(.*)/([0-9]+)/ index.php?p=search&q=$1&pn=$2 [L]
... e um arquivo PHP para simplificar o teste:
<html><head><title>Testing</title></head><body><pre><?php
var_dump($_GET);
echo "\r\n";
var_dump($_SERVER);
?></pre></body></html>
Atualização: Se você planeja ter nomes de categorias variáveis e não pode garantir que o caractere /
funcionará como um separador, você deve considerar a análise de URI no próprio aplicativo.
Exemplo de diretivas de reescrita:
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* /index.php [L,QSA]
Exemplo de arquivo PHP:
<?php
$uri = $_SERVER['REQUEST_URI'];
$uri_array = explode( "/", $uri );
switch ( $uri_array[0] ) {
case '':
/* serve index page */
break;
case 'feed':
switch ( $uri_array[1] ) {
case 'atom':
/* serve atom feed */
break;
case 'rss':
/* serve RSS feed */
break;
default:
/* default feed behavior */
break;
}
break;
case 'tags':
$tags = ($uri_array[1]) ? $uri_array[1] : '';
$page_number = ($uri_array[2]) ? $uri_array[2] : 1;
/* tag display behavior */
break;
default:
$category = ($uri_array[1]) ? $uri_array[1] : '';
$page_number = ($uri_array[2]) ? $uri_array[2] : 1;
/* category lookup behavior + return 404 if category not found */
break;
}
?>