Php Mod_重写平面链接

Php Mod_重写平面链接,php,.htaccess,mod-rewrite,hyperlink,flat,Php,.htaccess,Mod Rewrite,Hyperlink,Flat,我试图将get变量显示为平面链接。 要从此更改: http://mydomain.com/index.php?page=shop&var1=hat&var2=10 到 请记住,没有固定数量的变量,这就是为什么我使用var1、var2等等 [编辑] 我已经有一个部分工作的脚本,但最多只能使用3个变量 RewriteCond %{ENV:REDIRECT_STATUS} 200 RewriteRule .* - [L] RewriteRule ^([^/\.]+)/?$ index

我试图将get变量显示为平面链接。 要从此更改:

http://mydomain.com/index.php?page=shop&var1=hat&var2=10

请记住,没有固定数量的变量,这就是为什么我使用var1、var2等等

[编辑] 我已经有一个部分工作的脚本,但最多只能使用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来处理。也许最好的办法是
重写rule index.php/(.*)/index.php?call=$1
,然后使用脚本使用/delimiter进行分解


只有当您已经知道变量的数量时才可以这样做。

您可以将所有请求直接指向index.php(称为bootstrapping),并让脚本解析出变量

这是怎么做的,你应该看看。采埃孚也有很多其他的好东西可以利用

这是我的一个vhost的重写块,它有一个ZF驱动的网站

    RewriteCond %{REQUEST_FILENAME} !-l
    RewriteCond %{REQUEST_FILENAME} !-s
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI}      !^/favicon.ico
    RewriteRule ^.*$ index.php [NC,L]

谢谢你的帮助。你的脚本看起来不错,看起来应该可以工作,但它给了我“找不到对象”。也许我遗漏了什么,这是我在RewriteRule^index\.php/([^/]+)/([^/]+)/([0-9]+)$/index.php上实现的代码重写引擎?page=$1&var2=$2&var2=$3。该网站处于测试模式,不在域名的根啊!我的规则只有在index.php位于根目录下时才有效。是否尝试在index.php之前添加目录链接?这与第二个解决方案^(.*)?$index.php?page=$1[L]中的预期效果相同。无法使用index.php或目录。对我来说已经足够好了。谢谢你的帮助!!
    RewriteCond %{REQUEST_FILENAME} !-l
    RewriteCond %{REQUEST_FILENAME} !-s
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI}      !^/favicon.ico
    RewriteRule ^.*$ index.php [NC,L]