Quantcast
Channel: Ed Roesch» php
Viewing all articles
Browse latest Browse all 3

PHP Rewrite URLs using Output Buffer

$
0
0

I recently was in need of replacing URLs to SEO friendly ones, the only hiccup was I wanted to maintain the PHP $_GET params in the source code. As this is tried and true, and mod_rewrite can have its hiccups now and then. So after some research I found a solution that fit me perfectly. Using PHP’s output buffer I can utilize a callback function and a few preg_replace() functions to achieve all the necessary rewrites. And if for some reason I do not want to have rewrites enabled, I can comment out the callback and all my PHP URLs are back in place with no need for code editing. Here’s my example.

<?php

// initialize output buffer to compress page.
// note: I recommend using 'ob_gzhandler' for pages >5kb. Any smaller its not worth it.
ob_start('ob_gzhandler');

// call the rewrite function.
HandleRewrite();

// do your page stuff...
echo '<a href="index.php?subpage=MYPAGE">Hello World!</a>';

// handle the URL rewriting
function HandleRewrite()
{
	// rewrite URLS from output buffer
	// note: it is IMPERATIVE this function is ABOVE the ob_start('rewrite') callback.
	function rewrite($buffer)
	{
		// this preg_replace changes "mysite.com/index.php?subpage=TEST to mysite.com/TEST
		$buffer = preg_replace('/index.php\?subpage=(\w)/is', "$1", $buffer);
		return $buffer;
	}
	
	// start the output buffer for rewriting ('rewrite' being the callback function)
	ob_start('rewrite');
}

?>

Utilizing this method makes it so your entire page can be re-written to any mod_rewrite (or whatever SEO utility you use) without search/replace of every link in your code.

As always, if you have any questions or comments, please reply.


Viewing all articles
Browse latest Browse all 3

Latest Images

Trending Articles





Latest Images