Mod_rewrite平面链接

| 我正在尝试将我的get变量显示为平面链接。 要更改此:
http://mydomain.com/index.php?page=shop&var1=hat&var2=10
http://mydomain.com/index.php/shop/hat/10
请记住,没有固定数量的变量,这就是为什么我使用var1,var2,... etc [编辑] 我已经有部分工作的脚本,但只能使用最多3个变量
RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule .* - [L]
RewriteRule ^([^/\\.]+)/?$ index.php?page=$1 [L]
RewriteRule ^([^/\\.]+)/?([^/\\.]+)/?$ index.php?page=$1&var=$2 [L]
RewriteRule ^([^/\\.]+)/?([^/\\.]+)/?([^/\\.]+)/?$ index.php?page=$1&var=$2&var2=$3 [L]
RewriteRule ^([^/\\.]+)/?([^/\\.]+)/?([^/\\.]+)/?$ index.php?page=$1&var=$2&var2=$3&var3=$4 [L]
    
已邀请:
因此,首先记住mod_rewrite的工作方式如下:
http://mydomain.com/index.php/shop/hat/10
(客户端类型)被重写为
http://mydomain.com/index.php?page=shop&var1=hat&var2=10
(为客户提供的服务),但不一定像后者那样显示。 (除非您将其重定向) 因此,假设您的格式在这里完整描述:
RewriteRule ^index\\.php/([^/]+)/([^/]+)/([0-9]+)$ /index.php?page=$1&var2=$2&var2=$3
应该很好。 编辑: 哦,顺便说一句!我没有考虑变量的可变数量。我认为那不应该由mod_rewrite处理。也许最好的镜头是
RewriteRule index.php/(.*) /index.php?call=$1
,然后使用脚本使用/定界符将其爆炸。 仅当您已经知道仅AFAIK变量的数量时,才可以这样做。     
您可以将所有请求直接定向到index.php(称为引导),然后让脚本解析变量。 这就是Zend Framework的工作方式,您应该看看它。采埃孚还提供其他许多您可以利用的东西。 这是我使用ZF支持的网站从其中一个虚拟主机重写的代码。
    RewriteCond %{REQUEST_FILENAME} !-l
    RewriteCond %{REQUEST_FILENAME} !-s
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI}      !^/favicon.ico
    RewriteRule ^.*$ index.php [NC,L]
    

要回复问题请先登录注册