php - mod_rewrite not working in htaccess -
in .htaccess file in root of directory, have this;
rewriteengine on rewritebase / rewriterule ^website-comments/webid/([^/]*)$ /website-comments?webid=$1 [l]
but reason not rewriting url, if i'm thinking correct if user visits www.website.com/website-comments?webid=1 should change url www.website.com/website-comments/webid/1 doesn't seem working, doing wrong? in advance
edit 1
other htaccess rules
rewritecond %{request_filename} !-d rewritecond %{request_filename}\.php -f rewriterule ^(.*)$ $1.php [l]
apache's mod_rewrite when used basic rules can silently serve internal url users, cannot enforce use of internal url same simple rule. typically if want end users never use actual url (/website-comments?webid=123
in case) need first provide rule redirects away url matching in original http request using apache's variable %{the_request}
.
rewriteengine on # don't need rewritebase rewritebase / # first match url user requested. if ?webid=n # actual redirection pretty url # grab digits query string use in %1 rewritecond %{the_request} webid=(\d+) # ...only doing website-comments -- permanent redirect pretty url # client makes new request pretty url won't match above condition # on next trip. # # since [r] automatically append old query string, add ? # onto end clear out query string rule doesn't match again , # go infinite loop. rewriterule website-comments /website-comments/webid/%1? [l,r=301] # apply existing rule rewrite internally target resource rewriterule ^website-comments/webid/([^/]*)$ /website-comments?webid=$1 [l]
the above (\d+)
assumes webid
integer. if that's not true , include other characters, consider using ([^&]+)
instead match next &
or end of string.
Comments
Post a Comment