How to disable a rewriterule in a subdirectory.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Summary: In apache 1.3, files that were #included in SSI were NOT subject to rewrite rules. In 2.2, they are. I discovered this after getting many "unable to include" warnings. I want to find a way to negate a rewriterule.

Background 1:

In my main public_html .htaccess, I have the following:

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteCond %{REQUEST_URI} !/invalid.html
RewriteCond %{HTTP_USER_AGENT} !.*W3C_Validator.*
RewriteCond %{REQUEST_FILENAME} -f
RewriteCond /var/tmp/validator/%{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.isbroken !-f
RewriteRule .*\.html http://validator.gushi.org/stub?uri=http://%{SERVER_NAME}%{REQUEST_URI}&path=%{REQUEST_FILENAME} [L]
</IfModule>

What this does, in essence, is forces the wc3 validator to run on any directly-requested file. It's pretty cool, actually, and uses only filesystem metrics to ensure that a file has been validated (or that it's been marked as broken, for debugging), so you need only the stat(2) function to check, which is pretty fast.

Background part 2:

In another directory, I have a HOWTO that I've written about PGP keys. It uses mod_include to #include file=header.html and footer.html (the file was generated with markdown, so it lacks those bits).

(if you care, www.gushi.org/make-dns-cert/HOWTO.html)

With me so far?  Good.  Now for the problem, and how I worked around it.

Under apache 1.3, the #include file="header.html" would not have been subject to the above rewrite rules. By default in 2.2 it is.

I've figured out that I can add the "RewriteCond %{IS_SUBREQ} false" to this, and it fixes this problem. I could also put [NS] in that rule to fix it.

What I couldn't find anywhere is: what would I put in a RewriteRule that would basically say "Don't Rewrite!". I can set RewriteEngine Off, but that seems like a sledgehammer.

I.e. how would I disable the

"RewriteRule .*\.html"

in the parent directory and say "no, in this case just use the literal file we're being asked for." Put another way, how would I say "NoRewriteRule .*\.html"?

Another observation here would be: Apache didn't at all log the subrequest to the access/error logs, or the output of the CGI. The ONLY error I got was:

[Fri Aug 03 18:10:21 2012] [error] [client 149.20.50.7] unable to include "footer.html" in parsed file /home/danm/public_html/make-dns-cert/HOWTO.html

Which was spectacularly unhelpful.

--

--------Dan Mahoney--------
Techie,  Sysadmin,  WebGeek
Gushi on efnet/undernet IRC
ICQ: 13735144   AIM: LarpGM
Site:  http://www.gushi.org
---------------------------


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@xxxxxxxxxxxxxxxx
For additional commands, e-mail: users-help@xxxxxxxxxxxxxxxx



[Index of Archives]     [Open SSH Users]     [Linux ACPI]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Squid]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]

  Powered by Linux