Jeremy Leys
asked on
How do I write a [B] flag for Rewriterules?
How do I write a B flag for Rewriterules for the URL below given that I can only rely on part of a URL param key substring "checkKey-" of checkKey-AlcoholDrugServic es? (multiple categories can be chosen "checkKey-" is the common element)
I have a URL with GET vars I want to extract:
http://tsthealthpages.co.nz/index.php?option=com_mtree&cat_id=274&task=search&Itemid=null&checkKey-AlcoholDrugServices=Alcohol%20%26%20Drug%20Services&checkLoc-Canterbury=Canterbury
This is the output I get from print_r($_GET)
Array
(
[option] => com_mtree
[cat_id] => 274
[task] => search
[Itemid] => null
[checkKey-AlcoholDrugServi ces] => Alcohol
[checkLoc-Canterbury] => Canterbury
[Drug_Services] =>
)
I want this output:
Array
(
[option] => com_mtree
[cat_id] => 274
[task] => search
[Itemid] => null
[checkKey-AlcoholDrugServi ces] => Alcohol & Drug Services
[checkLoc-Canterbury] => Canterbury
)
I think it has something to do with .htaccess not having a B flag for Rewriterules.
Example
As the problem I get is similar to :
"Given a search term of 'x & y/z', a browser will encode it as 'x%20%26%20y%2Fz', making the request 'search/x%20%26%20y%2Fz'. Without the B flag, this rewrite rule will map to 'search.php?term=x & y/z', which isn't a valid URL, and so would be encoded as search.php?term=x%20&y%2Fz =, which is not what was intended."
(The issue though is my example URL is not rewritten but the problem I face is similar, could possibly be a urldecode decoding the $_GET automatically but I have searched the code and been unable to find it)
I have posted another question in relation to this one:
https://www.experts-exchange.com/questions/28427882/How-do-I-json-encode-GET-vars.html?anchorAnswerId=40046749#a40046749
I have a URL with GET vars I want to extract:
http://tsthealthpages.co.nz/index.php?option=com_mtree&cat_id=274&task=search&Itemid=null&checkKey-AlcoholDrugServices=Alcohol%20%26%20Drug%20Services&checkLoc-Canterbury=Canterbury
This is the output I get from print_r($_GET)
Array
(
[option] => com_mtree
[cat_id] => 274
[task] => search
[Itemid] => null
[checkKey-AlcoholDrugServi
[checkLoc-Canterbury] => Canterbury
[Drug_Services] =>
)
I want this output:
Array
(
[option] => com_mtree
[cat_id] => 274
[task] => search
[Itemid] => null
[checkKey-AlcoholDrugServi
[checkLoc-Canterbury] => Canterbury
)
I think it has something to do with .htaccess not having a B flag for Rewriterules.
Example
As the problem I get is similar to :
"Given a search term of 'x & y/z', a browser will encode it as 'x%20%26%20y%2Fz', making the request 'search/x%20%26%20y%2Fz'. Without the B flag, this rewrite rule will map to 'search.php?term=x & y/z', which isn't a valid URL, and so would be encoded as search.php?term=x%20&y%2Fz
(The issue though is my example URL is not rewritten but the problem I face is similar, could possibly be a urldecode decoding the $_GET automatically but I have searched the code and been unable to find it)
I have posted another question in relation to this one:
https://www.experts-exchange.com/questions/28427882/How-do-I-json-encode-GET-vars.html?anchorAnswerId=40046749#a40046749
##
# @version $Id: htaccess.txt 20196 2011-01-09 02:40:25Z ian $
# @package Joomla
# @copyright Copyright (C) 2005 - 2011 Open Source Matters. All rights reserved.
# @license GNU General Public License version 2 or later; see LICENSE.txt
##
##
# READ THIS COMPLETELY IF YOU CHOOSE TO USE THIS FILE!
#
# The line just below this section: 'Options +FollowSymLinks' may cause problems
# with some server configurations. It is required for use of mod_rewrite, but may already
# be set by your server administrator in a way that dissallows changing it in
# your .htaccess file. If using it causes your server to error out, comment it out (add # to
# beginning of line), reload your site in your browser and test your sef url's. If they work,
# it has been set by your server administrator and you do not need it set here.
##
##
#Authentication to password protect staging / test site directory
##
AuthType Basic
AuthName "Password Protected Area"
AuthUserFile /var/www/vhosts/tsthealthpages.co.nz/httpdocs/.htpasswd
Require valid-user
## Can be commented out if causes errors, see notes above.
Options +FollowSymLinks
## Mod_rewrite in use.
RewriteEngine On
## Begin - Rewrite rules to block out some common exploits.
# If you experience problems on your site block out the operations listed below
# This attempts to block the most common type of exploit `attempts` to Joomla!
#
# Block out any script trying to base64_encode data within the URL.
RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [OR]
# Block out any script that includes a <script> tag in URL.
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
# Block out any script trying to set a PHP GLOBALS variable via URL.
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
# Block out any script trying to modify a _REQUEST variable via URL.
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
# Send all blocked request to homepage with 403 Forbidden error!
RewriteRule ^(.*)$ index.php [F,L]
#
## End - Rewrite rules to block out some common exploits.
##
# Uncomment following line if your webserver's URL
# is not directly related to physical file paths.
# Update Your Joomla! Directory (just / for root).
##
# RewriteBase /
## Begin - Joomla! core SEF Section.
#
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/index.php
RewriteCond %{REQUEST_URI} (/component/) [OR]
RewriteCond %{REQUEST_URI} (/|\.php|\.html|\.htm|\.feed|\.pdf|\.raw|/[^.]*)$ [NC]
RewriteRule (.*) index.php
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
#
## End - Joomla! core SEF Section.
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Thanks Ray for all your help :)
Please see the EE grading guidelines. When you give the worst possible grade anyone can give to a colleague at EE, you're expected to explain the marked-down grade.
http://support.experts-exchange.com/customer/portal/articles/481419
What was wrong with this answer?
http://support.experts-exchange.com/customer/portal/articles/481419
What was wrong with this answer?
ASKER