我有这个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 :(得分: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]