[Melbourne-pm] Apache2::Filter::RE

Scott Penrose scottp at dd.com.au
Sun Feb 10 16:06:11 PST 2008


I am really sorry I have confused everyone.

This has NOTHING to do with URLs - so mod_rewrite - right out.

I will give you a new example, just to save some confusion.

s/Scott /Scooter /g

It is a content filter, not a URL/Header filter.

As for chaning on disk - just not practical. If that was the case we  
wouldn't have any apache filters - we could get rid of Deflate for  
example :-)

Content these days comes from remote sources, dynamic generated, etc
And we want to change things on the fly... filters are a way of doing  
that.

Anyway, the answer is... Apache::StrReplace with some modifications  
(actually I had already written my own but the code is 90% the same) -  
i.e. a set of Regular Expressions. I have contacted the author to see  
if we can make some changes, if not I will release my own module.

Sorry that the URL example I gave confused - I was changing URLs in  
the content - not URLs received by Apache. So my RegEx above should be  
more clear.

What I was/am looking for is a filter - not another way to do it as I  
know those :-)

BTW. There are other solutions, the plethara of XSL modules do the  
trick - but I thought they would probably be overkill for one simple  
change. Most of the Template filters can do it, you can even compile  
PHP as a filter and run that. All of those seem very heavy weight for  
a simple solution - what I want(ed) was mod_rewrite for content :-)

BTW. There is another problem with mod_rewrite - not related to this  
problem - I wrote Apache::Remote::Simple to get around it. The problem  
is that mod_rewrite can not change Query String or other headers -  
only the URL. In the system I was writting it was necessary to map a  
single search URL with "?q=My+Search+String" into what ever was  
appopriate for the remote system (e.g. http://search.cpan.org/search?query=My+Search+String&mode=all 
  for searching CPAN) - unfortunately it can't do it.

Scott

On 11/02/2008, at 10:54 AM, Toby Corkindale wrote:

> Scott Penrose wrote:
>>
>> On 10/02/2008, at 5:24 PM, deepfryed at gmail.com wrote:
>>
>>> mod_ext_filter allows you to do something similar using an external
>>> program, Apache::StrReplace does something very similar with a
>>> perloutputfilterhandler
>>
>> External is too slow for production.
>> Apache::StrReplace only allows a single Reg Ex.
>
> If performance is an issue, why not fix the problem at the source?
> ie. Edit your HTML on-disk..
>
> Failing that, I suggest using mod_rewrite or a custom 404 handler. In
> either case, you detect that the URL looks like one that should be on
> the other server, and redirect them over there.
>
> Lastly, if you're definitely going to filter every page, then I hope
> you're using a reverse-proxy to cache the results?
>
> -Toby
> _______________________________________________
> Melbourne-pm mailing list
> Melbourne-pm at pm.org
> http://mail.pm.org/mailman/listinfo/melbourne-pm



More information about the Melbourne-pm mailing list