2

I currently have a website that I am trying to optimize in terms of SEO.

I've got the site working with URLs such as:

domain.com/?app=about

In my app, $_GET[app] is set to 'about', as expected.

Now, I want to make it so that a URL like domain.com/about is treated as if it were domain.com/?app=about.

How can I do this in an Apache .htaccess file?

3 Answers 3

8

These are known as RewriteRules, and they are fairly straightforward:

RewriteEngine on
RewriteRule ^about$ /index.php?app=about

Here's the documentation

As far as making it more generic, how about this:

RewriteEngine on
RewriteRule ^([A-Za-z]+)$ /index.php?app=$1

This will make any request to something like /staff or /contact redirect to index.php?app=[staff|contact]

Sign up to request clarification or add additional context in comments.

2 Comments

is there anyway to make this more generic, i.e, have a general one for all apps instead of writing one for each app?
+1 - however that example will work, but if you've got a few things to rewrite, you're better off using a more generic solution. What about ^[^/]$ index.php?app=$1 I might be incorrect in that regex but the general idea is there :P
2

Use this in your .htaccess

RewriteEngine on
RewriteBase /your-site # only if neccessary

RewriteRule ^([^/])$ index.php?app=$1 [R,L]

EDIT

I added the L flag meaning process this as the last rule, and the R flag which by itself does not change the URL .. just rewrites internally. Doing R=301 will forward the browser to the rewritten page, which is useful for debugging.

1 Comment

it's getting there, but seems that something is wrong. thinkteen.co.uk try /contact or /staff :)
0

Creating a general .htaccess getting the path requested can be done with the following line:

RewriteRule ^((.+/)+)$ /index.php?path=$1 [L,B]

This will give you the path requested escaped properly so if the requested path is /hello/world you will get hello%2Fworld in the path parameter. Use the PHP function urldecode() to get the original format.

Works only if the url ends with '/'.

NOTE If you have other rewrites in the same file you should place this one last as it will match basically anything.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.