WordPress Tip on Permalink Options

By Angsuman Chakraborty, Gaea News Network
Friday, March 11, 2005

This tip covers configuration in Options/Permalinks [Edit Permalink Structure] for WordPress users. My version is WordPress 1.5.

By default WordPress uses a query string to identify a post. This is neither search engine friendly nor human friendly. A better way is to use a custom URI to better identify your posts. Many bloggers include a date as part of the permalink. I advise against it. The date of the post is not so important as to be part of the URI!

My suggestion is to use a simple structure containing the post-slug as your Permalink URI. I use:
Structure: /index.php/archive/%postname%/

Note that there is an index.php embedded. This is fine with search engines and humans too. And it will work great. It doesn’t require mod_rewrite functionality or change to htaccess. Something as simple as this will work in all configurations.

For category base I use simply: /index.php/category

This is just a simple example. You can make your URI as complicated as you want. Just remember to test it.
Personally I like it short and simple.

Update 1: Please refer to the comments below for points and counterpoints on this topic.

Update 2: The objections raised by some people is that having an identical named title for posts will cause problems with WordPress. This is not a valid observation anymore. In other words you can have 10 posts named “Happy New Year” and WordPress will assign unique post-slug to each. Simply said this approach is without any drawbacks AFAIK.

Update 3: Cem commented:

For future reference, I was able to get permalink URL rewriting working in WordPress by creating a php.ini at my domain root with the following configuration:

cgi.fix_pathinfo = 1
cgi.force_redirect = 0

Several people have found it useful on various environments including but not limited to IIS on windows as can be seen from the comments. Thanks Cem for sharing!

BTW: Personally I use /archive/%postname%/ for my Stem Cell Research Blog without requiring any changes.

The greatest benefit is that you don’t have to embed index.php as part of URL, possibly slightly increasing your SERP.

November 29, 2010: 3:54 pm

thanks for valuable info..i am using this for my blog..keep it up with many more good info..

maple story mesos
August 20, 2010: 7:02 pm

this is very good world!

July 5, 2010: 5:49 am

Thanks for permalink options on wp tutorial.

June 27, 2010: 8:02 am


I am seriously struggling for permalinks of pages.

Cannot find any solution so far without using .htaccess


June 14, 2010: 9:37 am

I agree with your suggestion that not to include the ‘date’ in the url. Definitely it will not be search engine friendly.

April 20, 2010: 2:19 am

We manufacture clevis,ball jiont,rod ends , Nb-gj.com has a large number of strong technical staff, to provide customers with quality products.

April 18, 2010: 10:56 pm

interesting for me

April 10, 2010: 2:03 am


This is informative post. I would like to revisit.

March 31, 2010: 11:56 pm

All people deserve good life time and loan or bank loan can make it better. Just because people’s freedom bases on money state.

March 15, 2010: 6:16 am

I am happy to say the long awaited release of WordPress 2.x blogs.

March 12, 2010: 10:05 pm

WordPress is power for almost everywhere!

February 6, 2010: 9:02 am

I think wordpress is after jommla still the best cms!

February 5, 2010: 5:04 pm

thanks for nice information, i am using this with my site,,,,keep posting grate info.

December 26, 2009: 5:55 am

Please tells us about blogger.How to do that?

December 3, 2009: 12:50 pm

Just make your .htaccess file in the WordPress root directory writable by Apache / web server you are running.

December 3, 2009: 7:57 am

Great work guys.


you said:

“BTW: Personally I use /archive/%postname%/ for my Stem Cell Research Blog without requiring any changes.

The greatest benefit is that you don’t have to embed index.php as part of URL, possibly slightly increasing your SERP.”

How did you do that. So far I only get the /index.php/%postname%/ to work.

tycoon cashflow review
November 11, 2009: 3:14 am

Nice useful tip.. thanks…

Bagesh Singh
November 6, 2009: 6:42 am

hi i use these option and i short out this problem thanks

November 3, 2009: 2:25 pm

Thanks! I was searching Google for how to modify Permalinks and landed on your post. Really useful and easy to follow!

Geek Blogger
October 3, 2009: 10:53 pm

Hi to all i m using – php 5.2.6 with cgi + iis7, please any one tell me how can i set my permalink structure, as of now it is giving me a ” Sorry You Reached Our 404 Error Page” if i use the custom /%postname%/. , please help me.

nuoc hoa
October 1, 2009: 2:01 am

thank you for sharing

September 29, 2009: 12:23 pm

Nice article related to wordpress permlink. I like to use /%postname% as it is good for the SEO

August 28, 2009: 11:25 am

I don’t think it’s a good idea to change permalink like your way.

May 19, 2009: 1:42 pm

I’ve done this and now my system crashes… cgi.fix_pathinfo = 1
cgi.force_redirect = 0

May 15, 2009: 3:14 am

wow, thanks a ton for this helpful tip. I was trying to use a .htacess and could not for the life of me figure it out, I tried your way and it works.

May 10, 2009: 2:33 pm

Hi, good tip !
I found your topic when I was looking for way to optimize permalink.
I’ve been wondering about it for a long time.
Thank for writing

March 2, 2009: 7:15 am

That doesn’t work on WP 2.7 on Godaddy Windows Hosting. I get a 404 error. Any idea why?

February 23, 2009: 12:07 am

If anyone is having trouble with permalinks on Wordpress running on the Microsoft IIS webserver, and if you don’t have access to the server’s php.ini (to add cgi.fix_pathinfo = 1 as suggested in Update 3 above), you can add the following line near the top of your wp-config.php file:

If your wordpress installation is not at the root level of your site you can use this instead, substituting your own path for /your/path/here in the regular expression:
$_SERVER['PATH_INFO'] = preg_replace(”|^/your/path/here|i”,”",$_SERVER['REQUEST_URI']);

will not be displayed