htaccess Rewrite question: file renaming

#1
My apologies for a noob question, but I've put a lot of time and googling into this yet I still haven't solved it. So help please!

I have a index.html file which is auto-generated by my tools (hence I don't want to manually rename it, because then I'd have to manually rename it every single time...) which contains PHP code. So I need to push it through the PHP parser. But only that one file.

In Apache in the .htaccess file I can do this:

<Files frankandcolleen/index.html>
RemoveHandler .html
AddType application/x-httpd-php .html
</Files>

This does not work on litespeed; my webhost tells me their litespeed doesn't support the Files directive.

I thought perhaps a rewrite might do the trick. Just to rename the file. Maybe something like this:

RewriteEngine on
RewriteRule frankandcolleen/index.html frankandcolleen/index.php [L]

This doesn't work either. Probably for a whole bunch of reasons... :)

Right now as an interim measure I'm doing this:

RemoveHandler .html
AddType application/x-httpd-php .html

This works, but it forces every single html file through the PHP parser, which is both slow, and CPU intensive on the server.

How do I push that html file, and only that file, through the PHP parser? Or rename that html file into a php file?

Thanks!!!
 
#3
Thanks, I can see that idea, but where to put it? The copy command is not permitted in .htaccess (although I'll confess I tried it anyway). Create a cron job and have it execute every hour? This needs to still work when the index.html file is automatically updated by the tools, which is why I really don't want to do anything manually.

It seems strange to me that something that can be done so simply in apache can't be done in litespeed? I've gotta be missing something here.
 
#5
questions:
1.how and how often do you update index.html?

2.are there any other .php/.html files under frankandcolleen folder?

1) Every 2 or 3 weeks.

2) There are a large number of pure html files (a little over a thousand I think) but index.html is the only html file containing PHP code. There are also three .php files.
 
#7
RewriteRule frankandcolleen/index.html - [T=application/x-httpd-php]
Tried it, with and without the hypen "-" in the middle; sorry, didn't work.

Currently the only thing that's working is the global:
AddType application/x-httpd-php .html

The thing that bugs me is, doesn't RewriteRule have a really crazy syntax? Well I think it does for apache - no idea about differences for litespeed.
www . webforgers.net/mod-rewrite/mod-rewrite-syntax.php
So I wonder if you can even just type in filenames like that. I've been attempting variations on this kind of a theme:

RewriteRule ^frankandcolleen/index\.html$ frankandcolleen/index\.html [T=application/x-httpd-php, L]

No luck.
 
#9
Thanks for the suggestion, but is there any chance one of the litespeed staff could actually try this? Because none of these great suggestions, or any variations of them I try, are actually working.

Thanks! I really do appreciate the help.
 

mistwang

LiteSpeed Staff
#10
Yes, I tried it in our lab, it works well.
Maybe .htaccess was not enabled, rewrite engine is not enabled or you used wrong URL to test it.
The rule only works with URL ending with "index.html", if you using URL like "...frankandcollen/" it wont work.
 
#11
Ah!

Thank you. Point well taken. So this doesn't work too well in practice for index files, because unless you specifically type in the index.html extension (and who does that?? I just type cnn.com when I want cnn for example) then it doesn't work.

OK, thank you, that makes sense. So this is not the right path to be going down.

I think I'm going to experiment with a cron job.
 
#12
So as we'd expect, a cron job does the trick. Perhaps not the most elegant, but it works. The cron job copies index.html to index.php. Then in .htaccess, just to be safe, I put this:

DirectoryIndex index.php index.html

simply to be extra-sure that the php file would be used in preference to the html file.

I used the -u parameter for cp (ie: cp -u index.html index.php) just to prevent unnecessary overwrites of the php file.
 
#14
Yes, sort-of. I tried your suggestion:

RewriteEngine on
RewriteRule index.html - [T=application/x-httpd-php]
It does indeed work if I do this:
http://frankandcolleen.mydomain.com/index.html

But not if I do this (which unfortunately is the normal way of doing it)
http://frankandcolleen.mydomain.com

I'm not sure why the server makes a distinction between these two cases, but it obviously does.


Your hard link idea
ln index.html index.php
is a great idea - I'll do that. As you point out, then the cron job isn't needed anymore.
 
Top