homepage Welcome to WebmasterWorld Guest from 54.204.77.26
register, free tools, login, search, subscribe, help, library, announcements, recent posts, open posts,
Subscribe to WebmasterWorld

Home / Forums Index / Code, Content, and Presentation / Apache Web Server
Forum Library, Charter, Moderators: Ocean10000 & incrediBILL & phranque

Apache Web Server Forum

    
Redirection and Rewrite rules clashing
Zacharias




msg:3214454
 9:46 am on Jan 10, 2007 (gmt 0)


I have some rewrite rules like this

RewriteRule ^/?([-A-Za-z0-9]+)/?$ index.php?sectionname=$1 [L]
RewriteRule ^/?([-A-Za-z0-9]+)/([-A-Za-z0-9]+)/?$ index.php?sectionname=$1&categoryname=$2 [L]
^/?([-A-Za-z0-9]+)/([-A-Za-z0-9]+)/([A-Za-z0-9-]+)/?$ index.php?sectionname=$1&categoryname=$2&title=$3 [L]

This rule

RewriteRule ^/?([-A-Za-z0-9]+)/([-A-Za-z0-9]+)/?$ index.php?sectionname=$1&categoryname=$2 [L]

rewrites a url to this

www.mydomain.com/sectionname/categoryname/

The problem that I have is that I have some old pages that I need to redirect to these new pages that I have rewritten urls for

My old page that i want to redirect is like this

www.mydomain.com/myoldsection/myoldcategory/

and I want to redirect it to my new page

www.mydomain.com/tv/video/

It wont work, and seems to add the full url to the end after the slash
like this

www.mydomain.com/section/category/index.php?sectionname=tv&categoryname=video

I have tried everything. It seems that the rewrite and redirect clash due to them workin on the same part of the URL (between the slashes)

I would be really grateful for any tips on how to get around this issue.

Or is there a better way than using htaccess to rewrite?

Cheers

 

jdMorgan




msg:3214738
 3:09 pm on Jan 10, 2007 (gmt 0)

May we see the "tv/video" redirect, in context along with the rewrites, please?

This is likely a problem of rule order and/or mixing directives from mod_rewrite and mod_alias and expecting them to execute in line-by-line order, which they may or may not do, depending on your server configuration.

Also, what version of Apache are you on?

Jim

Zacharias




msg:3215795
 10:38 am on Jan 11, 2007 (gmt 0)

Hi

Many thanks for your help

Here is my full htaccess file

I have to put some words in between the slashes to make sure the rewrites work, so this doesnt work as it stands at the moment.

For instance: ([-A-Za-z0-9]+)my-product-page

e.g.
RewriteRule ^/?([-A-Za-z0-9]+)/([-A-Za-z0-9]+)my-product-page/?$ index.php?sectionname=$1&categoryname=$2 [L]

I didnt realise the order in which they appear would matter. Is it possible to not have any of these rules clashing at all then? And will it be possible for me not to use the "my-product-page" in the URL?

Again many thanks for your help :)

Z


Options +FollowSymLinks
RewriteEngine On

RewriteRule ^_([-A-Za-z0-9]+)/?$ index.php?page=$1 [L]
RewriteRule ^/?([-A-Za-z0-9]+)/?$ index.php?sectionname=$1 [L]
RewriteRule ^/?([-A-Za-z0-9]+)/_([-A-Za-z0-9]+)/?$ index.php?sectionname=$1&page=$2 [L]
RewriteRule ^/?([-A-Za-z0-9]+)/([-A-Za-z0-9]+)/?$ index.php?sectionname=$1&categoryname=$2 [L]
RewriteRule ^/?([-A-Za-z0-9]+)/([-A-Za-z0-9]+)/_([-A-Za-z0-9]+)/?$ index.php?sectionname=$1&categoryname=$2&page=$3 [L]

## This seems to be the problem line, when I remove it the redirect works.
RewriteRule ^/?([-A-Za-z0-9]+)/([-A-Za-z0-9]+)/([A-Za-z0-9-]+)/?$ index.php?sectionname=$1&categoryname=$2&title=$3 [L]

RewriteRule ^/?([-A-Za-z0-9]+)/([-A-Za-z0-9]+)/([A-Za-z0-9]+)-([-A-Za-z0-9]+)/?$ index.php?sectionname=$1&categoryname=$2&ordertype=$3 [L]
RewriteRule ^/?([-A-Za-z0-9]+)/([-A-Za-z0-9]+)/([A-Za-z0-9]+)/_([-A-Za-z0-9]+)/?$ index.php?sectionname=$1&categoryname=$2&ordertype=$3&page=$4 [L]

RewriteRule ^/?([-A-Za-z0-9]+)/([-A-Za-z0-9]+)/([A-Za-z0-9]+)-([-A-Za-z0-9]+)/?$ index.php?sectionname=$1&categoryname=$2&filterfield=$3&filter=$4 [L]
RewriteRule ^/?([-A-Za-z0-9]+)/([-A-Za-z0-9]+)/([A-Za-z0-9]+)-([-A-Za-z0-9]+)/_([A-Za-z0-9]+)/?$ index.php?sectionname=$1&categoryname=$2&filterfield=$3&filter=$4&page=$5 [L]

RewriteRule ^/?([-A-Za-z0-9]+)/([-A-Za-z0-9]+)/([A-Za-z0-9]+)-([-A-Za-z0-9]+)/([A-Za-z0-9]+)-([-A-Za-z0-9]+)/?$ index.php?sectionname=$1&categoryname=$2&filterfield=$3&filter=$4&ordertype=$5&filter=$6 [L]
RewriteRule ^/?([-A-Za-z0-9]+)/([-A-Za-z0-9]+)/([A-Za-z0-9]+)-([-A-Za-z0-9]+)/([A-Za-z0-9]+)-([-A-Za-z0-9]+)/_([A-Za-z0-9]+)/?$ index.php?sectionname=$1&categoryname=$2&filterfield=$3&filter=$4&ordertype=$5&filter=$6&page=$7

RewriteCond %{REQUEST_FILENAME}!-f
RewriteCond %{REQUEST_FILENAME}!-d
RewriteRule .index.php

Redirect 301 /tv/video http://www.mydomain.com/newtv/newvideo

Zacharias




msg:3215884
 12:52 pm on Jan 11, 2007 (gmt 0)

P.S. My Apache version is Apache 2.0.59

Zacharias




msg:3217310
 3:08 pm on Jan 12, 2007 (gmt 0)

Please.... need help..... got to... find ... and answer to this problem.....

Sorry for talking in He-man language, but I would really be grateful for anyone to chip in as I have no clue how to solve this problem

Cheers

jdMorgan




msg:3217372
 3:51 pm on Jan 12, 2007 (gmt 0)

The problem here is that the size of the code discourages discussion, and also interferes with your own ability to figure it out.

This may not be a coding problem at all -- it may simply be that there is a logical inconsistency buried in all those "slashes and dashes" that is causing unexpected operation. The "visual clutter" makes it very hard for anyone not intimately familiar with your URL-patterns to discern.

Short, focused questions generally get quicker responses, while long code dumps may have to wait for the weekend...

By using directives from two modules -- both mod_rewrite and mod_alias, you lose control over which directives are processed first. I'd suggest re-coding that redirect using mod_rewrite, and placing it above your other rules:

RewriteRule ^tv/video(.*)$ http://www.example.com/newtv/newvideo$1 [R=301,L]

Jim

Zacharias




msg:3217472
 4:59 pm on Jan 12, 2007 (gmt 0)

Thanks so much JD, you totally solved my problem.

Point taken about the long posts, I will try and be more succinct next time.

Cheers again :)

Global Options:
 top home search open messages active posts  
 

Home / Forums Index / Code, Content, and Presentation / Apache Web Server
rss feed

All trademarks and copyrights held by respective owners. Member comments are owned by the poster.
Home ¦ Free Tools ¦ Terms of Service ¦ Privacy Policy ¦ Report Problem ¦ About ¦ Library ¦ Newsletter
WebmasterWorld is a Developer Shed Community owned by Jim Boykin.
© Webmaster World 1996-2014 all rights reserved