2015-07-26 5 views
1

У меня есть этот mod_rewrite правила:mod_rewrite не работает правильно

RewriteEngine On 
RewriteRule ^([^/]*)/([^/]*)$ /index.php?page=$1&id=$2 [L] 
RewriteRule ^([^/]*)/([^/]*)/([^/]*)$ /index.php?page=$1&sub_page=$2&tree_page=$3 [L] 

Но это не 100% работают.

Моя цель состоит в том, чтобы сделать это:

index.php?page=users&id=10 -> /users/10 
index.php?page=abc -> /abc 
index.php?page=abc&sub_page=def -> /abc/def 
index.php?page=abc&sub_page=def&tree_page=123 -> /abc/def/123 

Как я могу добиться этого с моим mod_rewrite выше? Работает последняя/abc/def/123, но 3 из них нет.

ответ

0

Вы можете использовать эти правила:

RewriteEngine On 

# skip all files and directories from rewrite rules below 
RewriteCond %{REQUEST_FILENAME} -d [OR] 
RewriteCond %{REQUEST_FILENAME} -f 
RewriteRule^- [L] 

RewriteRule ^([^/]+)/?$ index.php?page=$1 [L,QSA] 

RewriteRule ^([^/]+)/(\d+)/?$ index.php?page=$1&id=$2 [L,QSA] 

RewriteRule ^([^/]+)/([^/]+)/?$ index.php?page=$1&sub_page=$2 [L,QSA] 

RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ index.php?page=$1&sub_page=$2&tree_page=$3 [L,QSA] 
Смежные вопросы