[development] Can .htaccess discard part of a path?

Jamie Holly hovercrafter at earthlink.net
Tue Nov 10 20:57:09 UTC 2009

If there is no real way to figure out the new page from the old string 
then you could redirect it to a generic 404 page, or an internal Drupal 
page (or anything really):

RewriteEngine on
RewriteBase /
Rewritecond %{QUERY_STRING} ^q=cgi-bin(.*)$
RewriteRule .* {put your new URL here - keep the space between the * and 
URL}? [R=301,L]

That would redirect any query that has q=cgi-bin at the beginning to the 
new page (static 404, the front page, etc.).

If there is a way to figure up your own content then a simple module 
would come into play here. Check for $_GET['q'] equaling the cgi-bin 
line and for $_GET['file']. Do it on something like hook_init and then 
have some code figure the post from the $_GET['file'] and do a 
drupal_goto based on the result. If nothing is found then just do a 404.

Jamie Holly

Jennifer Hodgdon wrote:
> Nancy Wichmann wrote:
> > I put this in there already    
> RewriteRule ^cgi-bin/printOriginal.pl/$ 
> http://www.example.com [R=301,L]
> > And I am still seeing these come through to the Drupal log.
> You said the URLs that were problems looked like this:
> http://www.example.com/index.php?q=cgi-bin/printOriginal.pl&file=/alpha/beta/gamma/rage_prevention.shtml
> The regular expression above ends in $,  which is the regexp special 
> character meaning "end of the string/line". So it would only match a 
> URL that ended with "printOriginal.pl/". You need something after that 
> to match the rest of the URL... Something like:
> ^cgi-bin/printOriginal.pl/.*
> Might work a bit better... (Caveat: I'm not an expert on Apache 
> .htaccess redirects either.)
>     -- Jennifer

More information about the development mailing list