I have an .htaccess file with the following contents:
Options +FollowSymLinks +ExecCGI
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ entryPoint.php [QSA]
</IfModule>
With this, I want all requests to be redirected to the file entryPoint.php
so that it can examine them:
- If there is no extension, is must be a module
- If there's a .php, it's a hacking
If it's a .png, then it's a "safe" call.
In case of images, I used to output headers, and
file_get_contents()
their content. I figured out it's a bit slower than leaving a direct read.
My question is:
How to prevent this .htaccess from calling entryPoint.php
if there are references for images?
Extra feedback on the code I already have is greatly appreciated!
Put this line right before your
RewriteRule
You can use something like this to stop rewriting images
This rule says 'if the requested file ends with a period followed by either "jpg" or "png" then don't rewrite it.'
The
$
character just marks "the end of the string/filename", the-
says "don't rewrite the URL if this rule matches", and the[L]
means "don't process any more rules if this one matches.I'll add that the usual way of dealing with this sort of thing is to just apply a blanket statement of "if this file exists just serve the file up directly, but anything that doesn't exist gets processed by PHP." That type of rule looks like this:
This says "if the request isn't for a file or directory that exists, pass the request to index.php with the original path passed as a query string parameter called 'request', appending any other query string parameters to the new request."
As I understand you want to process all non-images threw your php file. Right?
If so, then here is what you need:
Remember to add to delete any image extension you want! If I misunderstood,Please tell me to correct my answer!