mod_rewrite无法正常工作

时间:2015-07-26 06:00:10

标签: apache .htaccess 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没有。

1 个答案:

答案 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]