Tag Archives: code
ModRewrite Shenanigans
So I am trying to figure out how to set up a router that can set up site hyperlinks that work with a mod_rewrite situation. I really like PATH_INFO
for this as I can use this for apps in subdirs (testing environment for example). This way, you can use http://domain.com/controller/action/1
and still have the fallback url working: http://domain.com/index.php/controller/action/1
.
If you place the following code in your htaccess, you can enjoy this technique.
#Force Path info in PHP, gets overridden in RewriteRule.
SetEnvIf Request_URI "^/?" PATH_INFO=/
# Mod Rewrite is off by default.
SetEnv MOD_REWRITE 0
<IfModule mod_rewrite.c>
# Update environment variable with some info.
SetEnv MOD_REWRITE 1
RewriteEngine On
# Webroot directory relative to index.php
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/?(robots\.txt|favicon\.ico|index.php)$
RewriteRule ^(.*)$ index.php/$1 [QSA,L]
</IfModule>
How does it work?
This way, you can use the following logic in your code to generate a correct url.
- Construct a variable to prepend:
- Take the directory name of the SCRIPT_NAME environment variable if the MOD_REWRITE environment variable is 1…
- … Or take just the SCRIPT_NAME environment variable.
- Add a trailing slash if missing.
- Add the url to a page you want or use the PATH_INFO environment variable for the current page (canonical links).
PHP Reverse Proxy
Just found this awesome proxy script: http://code.google.com/p/php5rp/ This is ideal for masking websites or storing your data on a different domain and faking the address. Yes, you can use a symlink, but this is a little safer.
A simple but smart dump(debugging) function using var_dump and func_get_args()
Every php developer knows the drill. Dumping debug info while developing. You either love it or you hate it. There are several solutions. In this post I will discuss those and suggest a lightweight alternative.
Continue reading “A simple but smart dump(debugging) function using var_dump and func_get_args()” »