Home
 

Customer Support

Search for keywords:

Browse by category:

How can one PHP file transparently handle all
search-engine friendly URLs?

The following is a way to have a search-engine friendly URL such as http://www.example.com/blog/2007/jan in the browser, be transformed server-side to http://www.example.com/blog/index.php?year=2007&month=jan without changing what is seen in the address bar of the browser.

This can be performed by using the mod_rewrite directive in your .htaccess file.

To perform this, your .htaccess file should have the following lines within it with one directive per line:

RewriteEngine On
RewriteRule ^blog/([0-9]+)/([a-z]+)$ /blog/index.php?year=$1&month=$2 [nc]


Explanation:
RewriteEngine On
The first line will ensure that your RewriteEngine is on.

RewriteRule ^blog/([0-9]+)/([a-z]+)$ /blog/index.php?year=$1&month=$2 [nc]
The second line is explained as follows:
^blog/ - ensures that it will look at the beginning of the string starting with blog

([0-9]+) - looks for a series of numbers from 0-9. The + at the end ensures that it will match repeating numbers one or more times i.e. the case of 2007.

([a-z]+)$ - looks for an input in lower-case letters. The + at the end ensures that it will match repeating letters one or more times i.e. the case of Tree. In this example the case will not matter because of what we have added at the end of the rule. The dollar sign at the end simply tells the directive to look for the end of the line.

/blog/index.php?year=$1&month=$2 - this is what the website will translate into where $1 is the first input received, in this case 2007 and $2 is the second input received, in this case jan.

[nc] - This stands for "no case" or "non-case sensitive." By having this at the end of the rule, it does not matter what case the input is in. For example, http://www.example.com/blog/2007/JaN will react the same as http://www.example.com/blog/2007/jan.

This can be easily expanded to include many different types of input in more general or specific terms using regular expressions (regex/regexp). More information on regex and how to use it can be found at:
http://www.regular-expressions.info/tutorial.html

Also, more complete information on the mod_rewrite directive can be found at:
http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html

User-Contributed Notes

add a note
anonymous -at- example.com
16-Oct-2009 06:34
If you want requests for any /*.php file to be transparently handled by
your /index.php, here's one way to do it in your .htaccess:

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/index.php$
RewriteRule ^([a-z]+).php$ /index.php [nc]

add a note

Related Questions:


How do I set PHP include_path?

How do I change timezone for PHP?

What PHP modules are available and how do I load them?

Can I run a PHP script on cron?

How do I do html form file uploads?

Why does a PHP function give an error that it is undefined?

Why does my PHP script throw an Internal Server Error 500?

Why does PHP HTTP authentication not work?

What version of PHP are you running and can I see a phpinfo()?

I can't upload a file larger than 8MB through a PHP script

Can you change session cookie timeout in php.ini for me?

Do you have a quick form mail script?

Where is the php_error_log?

Can I use a PHP extension like PDFlib that I have personally purchased a license to use?

How do I get different character sets within my PHP page to display correctly?

What's the difference between running PHP as a cgi or as a module in safe mode?

Do you offer PHP5 with MySQLi?

Can I have all .html pages parsed as PHP?

My PHP session is lost whenever I go to a secure URL using the shared SSL certificate.

The PHP curl module doesn't work.

Where can I download free PHP scripts?

Do you provide PEAR?

Do I need to set any 777 permissions in order for my PHP scripts to create files and directories?

What is CAPTCHA? How can I use it?

How do I execute my .php files as PHP 5?

How do I use the url_rewriter.tags setting for PHP?

The PDFlib extension gives a UPR description error.

Can I use Smarty Templates?

Why does flush() not flush the data to my browser?

Why does PHPLIB sessions give me a MySQL Database error?

Will IonCube encoded files work?

Will my Zend Encoded files work?

The pfpro pfpro_process() function keeps giving me Error 31

I need the virtual() function and it is not available.

Why does getallheaders() say undefined function?

Can I talk over SSL when opening an IMAP connection with the PHP imap_open() function?

How do I configure PHP?

How do I put PHP sessions into a database instead of the default files-based method?

My PHP script needs a newer version of Zend Optimizer. What do I do?

I need to execute my cron job with PHP5.2

I need a newer version of PHP to run certain software

Can I use the pfpro extension in PHP 5.2?

Browse Categories:

Getting Started, FTP, Telnet/SSH, Moving Domains, E-mail, Traffic Reports, Mailing Lists, Apache, PHP, CGI, Other Server-Side Scripting, MySQL Database, Imaging Libraries, Other Software, Billing & Terms, Control Panel, E-commerce, Pre-Sales


Modwest PHP Hosting      Copyright 2000-2009 by Modwest, Inc.      About    |    Blog    |    Community    |    Design    |    Jobs    |    Contact