URL rewriting via Wordpress Rewrite or .htaccess -


jump edit8 see how solved this


let's have wordpress blog: www.animals.com. have php file in theme directory: www.animals.com/wp-content/themes/mytheme/db.php. also, have custom template page, create new page in wordpress administration panel show db.php: www.animals.com/database.

so if want read lions, go to: www.animals.com/database/?animal=lion (because that's way decided write php, inserting value $_get['animal'] query, using pdo etc.).

now, access www.animals.com/database/?animal=lion www.animals.com/lion.

should use .htaccess or wordpress rewrite? should place .htaccess, in root of wordpress folder (with wp-config.php , files) or in theme directory?

the 1 root has rewritebase / , stuff wordpress default. should write achieve want? should put before or after existing code?

edit: public_html .htaccess , really want do: have website: www.domain.com , when type http://www.domain.com/dios/?dios=agni shows info god agni. type www.domain.com/dioses/agni access info god agni. php file in www.domain.com/wp-content/themes/smitespain/dios.php it's not working x_x

# begin wordpress <ifmodule mod_rewrite.c> rewriteengine on rewritebase / rewriterule ^dioses/(\w*)$ dios/?dios=$1 [nc,l] rewriterule ^index\.php$ - [l] rewritecond %{request_filename} !-f rewritecond %{request_filename} !-d rewriterule . /index.php [l] </ifmodule>  # end wordpress 

edit2: i'm using multisite (check edit4), , again, /database/ /dios/ , /dioses/ not actual folders created, thats name page created in wordpress. thing is, shows name of god in tab title :s means variable $_get['dios'] set, doesnt load file (dios.php) =/

edit3: need access domain.com/dios/?dios=agni specifically, because thats url let php file (dios.php) load get_header() wordpress, cant access file directly

edit4: decided remove multisite thing

edit5: these wordpress pages have: domain.com/dioses/ (www.domain.com/wp-content/themes/smitespain/dioses.php)
domain.com/dios/?dios=thor (www.domain.com/wp-content/themes/smitespain/dios.php)

edit6: reading in wordpress codex..and realized that, if wanna go domain.com/dioses can access going domain.com/index.php?pagename=dioses or domain.com/?pagename=dioses
so, added between rewritebase / , next rule: rewriterule example/test ?pagename=dioses , domain.com/example/test redirects me domain.com/dioses changes url in address bar :(
thing is, if try this: rewriterule example/test ?pagename=dios&dios=thor send me page 'dios' without '?dios=thor'

edit7: started using wordpress rewrite, added theme's functions.php:

function my_rewrite_rules() {       add_rewrite_rule(           'blah',         'index.php?pagename=dios&dios=agni',           'top'       );   }   add_action( 'init', 'my_rewrite_rules' ); 

and again..it loads page dios, without ?dios=agni

edit8: , finally, managed make work =)
first thing needed know is, new ?dios=xxxx no longer available $_get['dios'] instead, need call $wp_query->query_vars['dios'] added theme's functions.php

function add_query_vars($new_var) { $new_var[] = "dios"; return $new_var; } add_filter('query_vars', 'add_query_vars');  function add_rewrite_rules($rules) { $new_rules = array('([^/]+)' => 'index.php?pagename=dios&dios=$matches[1]'); $rules = $new_rules + $rules; return $rules; } add_filter('rewrite_rules_array', 'add_rewrite_rules'); 

i make sure $wp_query->query_vars['dios'] set
add regular rule

there way solve it, without touching wordpress.

add .htaccess

rewriterule ^lion /indexw.php?pagename=db&dios=$1 [l,e=uri:/detail/] 

create file indexw.php:

<?php $_server["request_uri"] = $_server["redirect_uri"]; include("index.php"); 

how works? mod_rewrite sets redirect_uri specified in e=uri:value argument. indexw.php overwrites request_uri correct value (thanks ravi thapliyal insight on this)


Comments

Popular posts from this blog

blackberry 10 - how to add multiple markers on the google map just by url? -

php - guestbook returning database data to flash -

delphi - Dynamic file type icon -