开发者

Mod_rewrite flat links

I'm trying to display my get variables as flat links. Want to change from this:

http://mydomain.com/index.php?page=shop&var1=hat&开发者_StackOverflowamp;var2=10

to

http://mydomain.com/index.php/shop/hat/10

Please keep in mind that there isn't a fixed number of variables, that's why I use var1,var2,...etc

[edit] I already have a partially working script, but works only with max 3 variables

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]


So first remember mod_rewrite works like this :

http://mydomain.com/index.php/shop/hat/10

(what the client type) is rewritten to

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

(what the client is served), but not necessarily displayed like the latter. (Unless you make it a redirect)

So assuming your format is completly described here :

RewriteRule ^index\.php/([^/]+)/([^/]+)/([0-9]+)$ /index.php?page=$1&var2=$2&var2=$3

Should be good.

EDIT:

Oh BTW! I did not take the variable number of variable into account. That should not be processed by mod_rewrite I think. Maybe the best shot is to RewriteRule index.php/(.*) /index.php?call=$1 and then use your script to explode using / delimiter.

You can only do it if you already know the number of variable only AFAIK.


You could just direct all request directly to index.php (called bootstrapping), and let the script parse out the variables.

This is how it's done with Zend Framework, you should take a look at it. ZF also has loads of other goodies you could utilize.

This is my rewrite block from one of my vhosts with a ZF powered website.

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜