Tuesday, 15 March 2011

php - Dynamic URL rewrite using .htaccess -



php - Dynamic URL rewrite using .htaccess -

i pretty new .htaccess rewrites, , i'm trying create rules dynamically rewrite urls.

for example, user enters next url:

http://example.com/xxx/?user=2002

it rewritten into:

http://example.com/xxx/user/2002/

if user passes multiple parameters this:

http://example.com/xxx/?user=2002&activity=100&result=true

it should become:

http://example.com/xxx/user/2002/activity/100/result/

note: query strings dynamically generated.

this have come with:

<ifmodule mod_rewrite.c> rewriteengine on rewritebase /news/ rewriterule ^index\.php$ - [l] rewritecond %{request_filename} !-f rewritecond %{request_filename} !-d rewriterule . /news/index.php [l] </ifmodule>

update

i tried create above code , query string rewrite code work together. modified .htaccess looks below:

<ifmodule mod_rewrite.c> rewriteengine on rewritebase /news/ rewriterule ^index\.php$ - [l] rewritecond %{request_filename} !-f rewritecond %{request_filename} !-d rewriterule . /news/index.php [l] # first take out query string /xxx/ urls rewritecond %{query_string} ^.+$ rewriterule ^news/?$ %{request_uri}/%{query_string}? [l] # convert & / rewriterule ^([^&]+)&(.*)$ $1/$2 [l] # convert = / rewriterule ^([^=]+)=([^=]+=.*)$ $1/$2 [l] rewriterule ^([^=]+)=([^=]+)$ $1 [l,r] # internal rule replace /n1/v1/n2/v2 query_string rewriterule "^(news)/([^/]+)/([^/]*)(/.*)?$" /$1$4?$2=$3 [l,qsa] </ifmodule>

really tricky rules these are. set these recursive rules in root .htaccess:

rewriteengine on rewritebase /news/ # first take out query string urls rewritecond %{the_request} \?\s+ rewriterule ^/?$ %{query_string}? [l] # convert & / rewriterule ^([^&]+)&(.*)$ $1/$2 [l] # convert = / rewriterule ^([^=]+)=([^=]+=.*)$ $1/$2 [l] rewriterule ^([^=]+)=([^=]+)$ $1/$2 [l,r] # internal rule replace /n1/v1/n2/v2 query_string rewriterule "^([^/]+)/([^/]*)(?:/(.*))?$" $3?$1=$2 [l,qsa] ## existing stuff followed rewriterule ^index\.php$ - [l] rewritecond %{request_filename} !-f rewritecond %{request_filename} !-d rewriterule . index.php [l]

php .htaccess mod-rewrite url-rewriting

No comments:

Post a Comment