2

I am trying to rewrite all .php pages to be .html. I'm using this expression:

url.rewrite-once = ( "^(.*)\.php$" => "$1.html" )

And it works, until I use $_GET arguments.

How can I make it so http://website.com/search.php?find=query will just be http://website.com/search.html?find=query ?

Preserving the arguments when it is passed through mod_rewrite?

Kyle
  • 3,004
  • 15
  • 52
  • 79
  • Duplicate of http://stackoverflow.com/questions/9700916/html-through-php-parser/9701044#9701044 – vascowhite Mar 17 '12 at 22:31
  • Not using apache, lightty http://www.lighttpd.net/ – Kyle Mar 17 '12 at 22:33
  • Thought it may be useful to you. – vascowhite Mar 17 '12 at 22:34
  • I'm sorry vascowhite. It was helpful thank you. – Kyle Mar 17 '12 at 22:39
  • In my answer I may have misunderstood your question. Are all of your files .html and you want them to be parsed as PHP? Or do you just want to rewrite fake `.html` urls to actual `.php` files? Are you using FastCGI? – drew010 Mar 17 '12 at 22:42
  • @drew010 I am using fastcgi yes. Currently all my files are .php. I'm just trying to fake the urls as being .html. – Kyle Mar 17 '12 at 22:44
  • Ok in that case my answer should work okay. I use FastCGI in lighttpd as well and I use a similar rewrite rule for some URLs and it works fine both with and without query string. – drew010 Mar 17 '12 at 22:48

2 Answers2

2

Try:

url.rewrite-once = ( "^(.*)\.php\??(.*)?$" => "$1.html?$2" )

This should match with or without query string arguments.

Since you are trying to make .php files appear as .html files, I think the expressions may be reversed. You will want to match on .html and rewrite to the .php file.

drew010
  • 68,777
  • 11
  • 134
  • 162
1

The following changes to /etc/lighttpd/lighttpd.conf file allow php to be executed inside .html files.

I commented out this line

server.modules = (
     "mod_access",
     "mod_alias",
     #"mod_compress",
     "mod_redirect",
}

and included this line

fastcgi.map-extensions    = ( ".html" => ".php" )

then restarted the server

sudo service lighttpd force-reload

The reference I used: http://www.cyberciti.biz/tips/lighttpd-map-html-pages-to-php-execute-html-pages-as-php.html

hinekyle
  • 822
  • 8
  • 16