Forum Moderators: phranque

Message Too Old, No Replies

.htaccess rewrite from index.cgi?action= to / or index.php

         

CrazyBigGaz

12:44 pm on Jun 9, 2012 (gmt 0)

10+ Year Member



Hi,

We moved from a forum provider, to our own forum and hosting.
The old forum used index.cgi?action=
Some times it is index.cgi?action=viewprofile&user=USERNAME etc....

I would like to redirect any index.cgi?action= request to http://www.example.com/ or index.php

I am not sure of the rewrite rule I would need, can anyone help?

incrediBILL

3:47 pm on Jun 9, 2012 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member Top Contributors Of The Month



Seems like you're missing some information there.

How is the action passed?

Have you taken a stab at trying to write one?

It's pretty simple, just use the format:
RewriteRule Pattern Substitution

For instructions, check out this page:
[httpd.apache.org...]

For examples, see here:
[httpd.apache.org...]

Take a shot at making one and we'll critique it for you, let you know what to change if it has any errors.

lucy24

10:21 pm on Jun 9, 2012 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member Top Contributors Of The Month



I would like to redirect any index.cgi?action= request to http://www.example.com/ or index.php

The first. Never say explicitly "index.php" or "index.html" or similar; the name of a directory's index page is simply the directory name with trailing slash.

I think you are looking at the redirect-to-rewrite two-step. This is the boilerplate (ignore the parts that don't apply):


The Redirect-to-Rewrite Two-Step

Problem: Your dynamically generated pages have long, ugly, hard-to-memorize URLs, probably containing query strings. You want them to have short pretty URLs.

The Solution comes in two parts.

Part 1. Redirect
When a user asks for the long ugly URL, redirect to the short pretty URL. Basic pattern:

RewriteCond %{THE_REQUEST} \?
RewriteCond %{QUERY_STRING} queryname=([a-z]+)
RewriteRule longcomplicatedURL http://www.example.com/blahblah/%1? [R=301,L]


The %1 is captured from the original query string, and the final ? means that you now get rid of the query string. In real life it will usually be a little more complicated, but that's the basic process.

Example:
user asks for
www.example.com/directory/morestuff/index.php?model=volvo


They get bounced over to
www.example.com/cars/volvo


Part 2. Rewrite
You get an incoming request for a short pretty URL-- either from a new arrival or from someone who was redirected in Part 1. The server can't tell the difference.

RewriteRule blahblah/([a-z]+)$ longcomplicatedURL?queryname=$1 [L]


This time around, you're capturing part of the request and changing it into a query string.

Example:
user asks for
www.example.com/cars/volvo


They may think that's what they're getting-- it's what the browser's address bar says-- but behind the scenes the page content is really coming from
www.example.com/directory/morestuff/index.php?model=$1


Now you see why Part 1 had to look at THE_REQUEST. It's for insurance. If something happens later on, your long complicated URL might pass through mod_rewrite again. If it does, you need to be sure it doesn't get re-redirected. Otherwise there will be an infinite loop.

Now wait a minute! Does this mean that if someone starts out asking for "longcomplicatedURL", they go through this whole rigamarole and then they end up right back where they started?

Yup. But they don't know it. They only know what the browser's address bar tells them. Even robots-- yes, even google-- can't tell that they're being rewritten.

The Redirect part of the package-- Part 1-- is not technically necessary. The Rewrite-- Part 2-- will function without it. But redirecting everyone to the same URL means that everyone is now on the same page ... and it avoids nasty things like Duplicate Content.

But you're not done yet.

Part 0.
Before you do anything with Part 1 and Part 2, go over your current site carefully. Make sure that your own links point only to the short pretty URL. Requests for the long complicated URL should come only from outside-- from people with outdated bookmarks, or old links from other sites. Your own site will use only the pretty URLs.