samoyed
samoyed

Reputation: 879

URL rewrite to remove parameters


I'm working on a site where all the pages are actually index.php + a 'name' parameter that is analyzed and loads the appropriate template and content.
the homepage url is:
http://www.some_site.com/?page=homepage

1. i was asked to "change" the homepage url to:
http://www.some_site.com
can i use url rewite and htaccess for that and if so, what should i write there?

working on my local machine, i tried this code (mode rewrite is enabled):

<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteRule /index.php /index.php?page=homepage
</IfModule>

i would still need the 'name' parameter to be available to the php code of course, so i can load the template and css files.

2. it would be nice for other pages (not homepage) to be converted from (example)
http://www.some_site.com/?page=products
to:
http://www.some_site.com/products
this is less crucial.

thanx in advance and have a nice day :-)

Upvotes: 0

Views: 2258

Answers (2)

anroesti
anroesti

Reputation: 11373

The following should be what you're looking for (for your second, less crucial, question). Put it in your .htaccess-file:

RewriteEngine On
RewriteRule ^/([a-zA-z0-9-_]+)/?$ index.php?page=$1

Upvotes: 1

Dan Grossman
Dan Grossman

Reputation: 52372

You don't need a rewrite rule at all. Just change your index.php file to show the homepage when there is no page variable at all.

if (!isset($_GET['page'])) {
    $_GET['page'] = 'homepage';
}

For educational purposes, the rewrite rule:

RewriteRule /$ index.php?page=homepage [L]

That is, the URI to match is just the slash (the URI starts after your domain in the URL). The $ means that there should be no characters after the slash.

As for products and such, assuming single words made of only letters:

RewriteRule /([a-zA-Z]+)$ index.php?page=$1 [L]

Upvotes: 3

Related Questions