• 0

Search Engine Friendly URLs


Question

Hello,

I am trying to learn how to use Search Engine Friendly URLs and I've come this far.

I can turn an url like this: http://localhost/index.php?a=1 into this http://localhost/area/1/

thanks to this code in a .htaccess file:

RewriteEngine On
#RewriteRule ^area/(.*)/$ index.php?a=$1 [L]

What I am trying to do is to turn an url like this:

http://localhost/index.php?a=1&b=2&amp...blah=y&hi=z

into something like this:

http://localhost/area/1/b/2/c/3/something/x/blah/y/hi/z/

How can I do this if possible?

Link to comment
https://www.neowin.net/forum/topic/700482-search-engine-friendly-urls/
Share on other sites

7 answers to this question

Recommended Posts

  • 0

Drupal does this.

For example this site I made.

It turns http://www.chirohoepertingen.be/index.php?q=node/114

into http://www.chirohoepertingen.be/node/114

Then, in PHP, you can split up the values between the /'s to seperate values. I'm not at home right now, but I'll check the source code to see if I can get you a code up and running in PHP/.htaccess

  • 0

What you ask is certainly possible. On the left of the RewriteRule you have a regular expression representing the URL the clients request, and on the right, the transformation to a real URL the server can retreive. See the '$1' in the transformation? It grabs whatever is in the first set of brackets in the regex. Likewise, if you had a second pair of parenthesis, you would use $2 to grab that information, and so on. This should let you write your longer rules.

  • 0
What you ask is certainly possible. On the left of the RewriteRule you have a regular expression representing the URL the clients request, and on the right, the transformation to a real URL the server can retreive. See the '$1' in the transformation? It grabs whatever is in the first set of brackets in the regex. Likewise, if you had a second pair of parenthesis, you would use $2 to grab that information, and so on. This should let you write your longer rules.

What if I don't know how many $ I will have?

What do I have to write in RewriteRule so I can have an url like mentioned above and without knowing the amount of $?

  • 0

RewriteEngine On
RewriteBase /
RewriteRule areaone/page-(.*).html$ index.php?a=1&p=$1 [L]
RewriteRule areatwo/page-(.*).html$ index.php?a=2&p=$1 [L]
RewriteRule areatwo/page-(.*)-tourpage-(.*).html$ /index.php?a=2&p=$1&t=$2 [L]

a= area

p= page

t= tour page (inside one page (5) and area (2))

What I am trying to do is to transform a link like this:

http://www.mysite.com/index.php?a=3&p=5

into this:

http://www.mysite.com/areathree/page-5.html

Everything is ok so far.

But now, I need to add an extra variable to the URI which doesn't allways appear, only on the page 5, so the url needs to be like this:

http://www.mysite.com/areatwo/page-5-tourpage-1.html

I tried to use the third RewriteRule as in the above example and it only works if I comment the second RewriteRule...

How can I fix this?

Thanks! :beer:

  • 0

You'd need to put that third rewrite rule before the second. Basically the process is getting 3rd example, but the regex check is being satisfied by the 2nd rewrite rule. Change it to this:

RewriteEngine On
RewriteBase /
RewriteRule areaone/page-(.*).html$ index.php?a=1&p=$1 [L]
RewriteRule areatwo/page-(.*)-tourpage-(.*).html$ /index.php?a=2&p=$1&t=$2 [L]
RewriteRule areatwo/page-(.*).html$ index.php?a=2&p=$1 [L]

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.