如何解决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]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。