exclude directory from rewrite in .htaccess

RJM62

Touchdown! Greaser!
Joined
Jun 15, 2007
Messages
13,157
Location
Upstate New York
Display Name

Display name:
Geek on the Hill
Okay, so I want to refer all visitors using a mobile browser to the mobile site, EXCEPT for visits to a particular directory named /tweet/. That directory contains an uploader for the company's employees to upload little messages directly to the site, and they access it using their BlackBerries.

Why doesn't this .htaccess code work to exclude requests for files in the /tweet/ directory from redirection?

Code:
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} !^/tweet/.*$
RewriteCond %{HTTP_USER_AGENT} android|avantgo|blackberry|blazer|compal|elaine|fennec|hiptop|ip(hone|od)|iris|kindle|lge\ |maemo|midp|mmp|mobile|o2|opera\ m(ob|in)i|palm(\ os)?|p(ixi|re)\/|plucker|pocket|psp|smartphone|symbian|treo|up\.(browser|link)|vodafone|wap|windows\ ce;\ (iemobile|ppc)|xiino [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a\ wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r\ |s\ )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1\ u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp(\ i|ip)|hs\-c|ht(c(\-|\ |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac(\ |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt(\ |\/)|klon|kpt\ |kwc\-|kyo(c|k)|le(no|xi)|lg(\ g|\/(k|l|u)|50|54|e\-|e\/|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(di|rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-|\ |o|v)|zz)|mt(50|p1|v\ )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v\ )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-|\ )|webc|whit|wi(g\ |nc|nw)|wmlb|wonu|x700|xda(\-|2|g)|yas\-|your|zeto|zte\-) [NC]
RewriteRule ^(.*) http://ridacritter.mobi/ [R,L]

Thanks,

Rich
 
A couple of ideas to try, shamefully stolen from Google searches.

First, you can put a new rule ahead of the ones that you don't want to run for those subdirectories:

Code:
RewriteRule ^tweet - [L]

This tells mod_rewrite to leave the URL unchanged and quit processing rules if the requested subdirectory matches the one specified. If the requested subdirectory is in the list, all the rules after this one get skipped.

Another option would be to put an .htaccess directly in the tweet directory (the one you want to exclude), with RewriteEngine off in it.
 
A couple of ideas to try, shamefully stolen from Google searches.

First, you can put a new rule ahead of the ones that you don't want to run for those subdirectories:

Code:
RewriteRule ^tweet - [L]
This tells mod_rewrite to leave the URL unchanged and quit processing rules if the requested subdirectory matches the one specified. If the requested subdirectory is in the list, all the rules after this one get skipped.

Ahh, that worked. Thanks! I'd actually tried it before, but I forgot the hyphen. DOH!

Another option would be to put an .htaccess directly in the tweet directory (the one you want to exclude), with RewriteEngine off in it.

I don't think that would have worked because the .htaccess file in /tweet/ wouldn't have ever been read, because the .htaccess file in the root would have redirected already.

Ticket closed.

Thanks again,

Rich
 
Ahh, that worked. Thanks! I'd actually tried it before, but I forgot the hyphen. DOH!

Ticket closed.

Thanks again,

Rich

If that one worked, as written, then maybe the reason your first one didn't was the / before tweet? I'm not where I can step through code and see if the REQUEST_URI has a leading slash or not.
 
If that one worked, as written, then maybe the reason your first one didn't was the / before tweet? I'm not where I can step through code and see if the REQUEST_URI has a leading slash or not.

Possibly, although I do recall using the / before for other types of directives...

But it's working now, so I'm not going to fart around with it. Next I'll work on mapping the redirects to the actual corresponding pages. Right now they just go to either the animal control root or the pest control root on the mobile site.

That sort of thing I usually do late at night so when I goof and the "Internal Server Misconfiguration" errors come up, no one notices. :redface:

-Rich
 
Back
Top