mod_rewrite - Rules worked on old server, now not. Help?

Discuss practical ways rearrange URLs using mod_rewrite.

mod_rewrite - Rules worked on old server, now not. Help?

Postby darwin2kx » Fri Apr 25, 2008 7:28 pm

I have a set of mod_rewrite rules that were functional until I moved to a new server. Now, the rewrites are only working for the top level. Can anyone tell me what is broken?

Code: Select all
DirectoryIndex index.php
Options ExecCGI FollowSymLinks Includes
RewriteEngine On

# Shortcuts
RewriteRule ^rss$ /odds/hps_frontend/content/news/news.xml [L]

# Exceptions
RewriteRule ^account/cancel/([0-9]+)/?$ /odds/hps_frontend/account.php?p=cancel&memberid=$1 [QSA,L]
RewriteRule ^account/change/([0-9]+)/?$ /odds/hps_frontend/account.php?p=change&memberid=$1 [QSA,L]
RewriteRule ^account/reactivate/([0-9]+)/?$ /odds/hps_frontend/account.php?p=reactivate&memberid=$1 [QSA,L]
RewriteRule ^purchase/plan/([A-Za-z]+)/?$ /odds/hps_frontend/purchase.php?p=plan&plan=$1 [QSA,L]
RewriteRule ^purchase/package/([0-9]+)/?$ /odds/hps_frontend/purchase.php?p=package&packageid=$1 [QSA,L]

RewriteRule ^purchase/return/([A-Za-z0-9\-]+)/?$ /odds/hps_frontend/purchase.php?p=return&token=$1 [QSA,L]


RewriteRule ^view/([A-Za-z0-9\-]+)/?$ /odds/hps_frontend/view.php?id=$1 [QSA,L]

# Catch all
RewriteCond %{DOCUMENT_ROOT}/odds/hps_frontend/$1.php -f
RewriteRule ^([^/]+)/?$ /odds/hps_frontend/$1.php [QSA,L]

RewriteCond %{DOCUMENT_ROOT}/odds/hps_frontend/$1.php -f
RewriteRule ^([^/]+)/([^/]+)/?$ /odds/hps_frontend/$1.php?p=$2 [QSA,L]


Code: Select all
Log removed
Last edited by darwin2kx on Sun Apr 27, 2008 6:32 pm, edited 1 time in total.
darwin2kx
 
Posts: 9
Joined: Mon Oct 15, 2007 9:16 am

Postby richardk » Sat Apr 26, 2008 3:10 pm

What do you mean by the top level? What works and what doesn't work?
richardk
 
Posts: 8800
Joined: Wed Dec 21, 2005 7:50 am

Postby darwin2kx » Sat Apr 26, 2008 3:13 pm

A URL like /account works properly, but /account/login does not.
darwin2kx
 
Posts: 9
Joined: Mon Oct 15, 2007 9:16 am

Postby richardk » Sat Apr 26, 2008 3:21 pm

So the problem is with the "Catch all" section? Try
Code: Select all
# Catch all
RewriteCond %{DOCUMENT_ROOT}/odds/hps_frontend/$1.php -f
RewriteRule ^([^/]+)(/([^/]+))?/?$ /odds/hps_frontend/$1.php?p=$3 [QSA,L]

or
Code: Select all
# Catch all
RewriteCond %{REQUEST_URI} ^/([^/]+)(/([^/]+))?/?$
RewriteCond %{DOCUMENT_ROOT}/odds/hps_frontend/%1.php -f
RewriteRule ^([^/]+)(/([^/]+))?/?$ /odds/hps_frontend/$1.php?p=$3 [QSA,L]
richardk
 
Posts: 8800
Joined: Wed Dec 21, 2005 7:50 am

Postby darwin2kx » Sun Apr 27, 2008 6:28 pm

No dice on either of those fixes. Here is a fresh log dump. Any other suggestions?

Code: Select all
add path info postfix: /var/www/purchase.php -> /var/www/purchase.php/plan/silver
strip per-dir prefix: /var/www/purchase.php/plan/silver -> purchase.php/plan/silver
applying pattern '^rss$' to uri 'purchase.php/plan/silver'
add path info postfix: /var/www/purchase.php -> /var/www/purchase.php/plan/silver
strip per-dir prefix: /var/www/purchase.php/plan/silver -> purchase.php/plan/silver
applying pattern '^account/cancel/([0-9]+)/?$' to uri 'purchase.php/plan/silver'
add path info postfix: /var/www/purchase.php -> /var/www/purchase.php/plan/silver
strip per-dir prefix: /var/www/purchase.php/plan/silver -> purchase.php/plan/silver
applying pattern '^account/change/([0-9]+)/?$' to uri 'purchase.php/plan/silver'
add path info postfix: /var/www/purchase.php -> /var/www/purchase.php/plan/silver
strip per-dir prefix: /var/www/purchase.php/plan/silver -> purchase.php/plan/silver
applying pattern '^account/reactivate/([0-9]+)/?$' to uri 'purchase.php/plan/silver'
add path info postfix: /var/www/purchase.php -> /var/www/purchase.php/plan/silver
strip per-dir prefix: /var/www/purchase.php/plan/silver -> purchase.php/plan/silver
applying pattern '^purchase/plan/([A-Za-z]+)/?$' to uri 'purchase.php/plan/silver'
add path info postfix: /var/www/purchase.php -> /var/www/purchase.php/plan/silver
strip per-dir prefix: /var/www/purchase.php/plan/silver -> purchase.php/plan/silver
applying pattern '^purchase/package/([0-9]+)/?$' to uri 'purchase.php/plan/silver'
add path info postfix: /var/www/purchase.php -> /var/www/purchase.php/plan/silver
strip per-dir prefix: /var/www/purchase.php/plan/silver -> purchase.php/plan/silver
applying pattern '^purchase/return/([A-Za-z0-9\-]+)/?$' to uri 'purchase.php/plan/silver'
add path info postfix: /var/www/purchase.php -> /var/www/purchase.php/plan/silver
strip per-dir prefix: /var/www/purchase.php/plan/silver -> purchase.php/plan/silver
applying pattern '^([^/]+)/?$' to uri 'purchase.php/plan/silver'
add path info postfix: /var/www/purchase.php -> /var/www/purchase.php/plan/silver
strip per-dir prefix: /var/www/purchase.php/plan/silver -> purchase.php/plan/silver
applying pattern '^([^/]+)/([^/]+)/?$' to uri 'purchase.php/plan/silver'
pass through /var/www/purchase.php
add path info postfix: /var/www/purchase.php -> /var/www/purchase.php/plan/silver
strip per-dir prefix: /var/www/purchase.php/plan/silver -> purchase.php/plan/silver
applying pattern '^rss$' to uri 'purchase.php/plan/silver'
add path info postfix: /var/www/purchase.php -> /var/www/purchase.php/plan/silver
strip per-dir prefix: /var/www/purchase.php/plan/silver -> purchase.php/plan/silver
applying pattern '^account/cancel/([0-9]+)/?$' to uri 'purchase.php/plan/silver'
add path info postfix: /var/www/purchase.php -> /var/www/purchase.php/plan/silver
strip per-dir prefix: /var/www/purchase.php/plan/silver -> purchase.php/plan/silver
applying pattern '^account/change/([0-9]+)/?$' to uri 'purchase.php/plan/silver'
add path info postfix: /var/www/purchase.php -> /var/www/purchase.php/plan/silver
strip per-dir prefix: /var/www/purchase.php/plan/silver -> purchase.php/plan/silver
applying pattern '^account/reactivate/([0-9]+)/?$' to uri 'purchase.php/plan/silver'
add path info postfix: /var/www/purchase.php -> /var/www/purchase.php/plan/silver
strip per-dir prefix: /var/www/purchase.php/plan/silver -> purchase.php/plan/silver
applying pattern '^purchase/plan/([A-Za-z]+)/?$' to uri 'purchase.php/plan/silver'
add path info postfix: /var/www/purchase.php -> /var/www/purchase.php/plan/silver
strip per-dir prefix: /var/www/purchase.php/plan/silver -> purchase.php/plan/silver
applying pattern '^purchase/package/([0-9]+)/?$' to uri 'purchase.php/plan/silver'
add path info postfix: /var/www/purchase.php -> /var/www/purchase.php/plan/silver
strip per-dir prefix: /var/www/purchase.php/plan/silver -> purchase.php/plan/silver
applying pattern '^purchase/return/([A-Za-z0-9\-]+)/?$' to uri 'purchase.php/plan/silver'
add path info postfix: /var/www/purchase.php -> /var/www/purchase.php/plan/silver
strip per-dir prefix: /var/www/purchase.php/plan/silver -> purchase.php/plan/silver
applying pattern '^([^/]+)/?$' to uri 'purchase.php/plan/silver'
add path info postfix: /var/www/purchase.php -> /var/www/purchase.php/plan/silver
strip per-dir prefix: /var/www/purchase.php/plan/silver -> purchase.php/plan/silver
applying pattern '^([^/]+)/([^/]+)/?$' to uri 'purchase.php/plan/silver'
pass through /var/www/purchase.php
add path info postfix: /var/www/plan -> /var/www/plan/silver
strip per-dir prefix: /var/www/plan/silver -> plan/silver
applying pattern '^rss$' to uri 'plan/silver'
add path info postfix: /var/www/plan -> /var/www/plan/silver
strip per-dir prefix: /var/www/plan/silver -> plan/silver
applying pattern '^account/cancel/([0-9]+)/?$' to uri 'plan/silver'
add path info postfix: /var/www/plan -> /var/www/plan/silver
strip per-dir prefix: /var/www/plan/silver -> plan/silver
applying pattern '^account/change/([0-9]+)/?$' to uri 'plan/silver'
add path info postfix: /var/www/plan -> /var/www/plan/silver
strip per-dir prefix: /var/www/plan/silver -> plan/silver
applying pattern '^account/reactivate/([0-9]+)/?$' to uri 'plan/silver'
add path info postfix: /var/www/plan -> /var/www/plan/silver
strip per-dir prefix: /var/www/plan/silver -> plan/silver
applying pattern '^purchase/plan/([A-Za-z]+)/?$' to uri 'plan/silver'
add path info postfix: /var/www/plan -> /var/www/plan/silver
strip per-dir prefix: /var/www/plan/silver -> plan/silver
applying pattern '^purchase/package/([0-9]+)/?$' to uri 'plan/silver'
add path info postfix: /var/www/plan -> /var/www/plan/silver
strip per-dir prefix: /var/www/plan/silver -> plan/silver
applying pattern '^purchase/return/([A-Za-z0-9\-]+)/?$' to uri 'plan/silver'
add path info postfix: /var/www/plan -> /var/www/plan/silver
strip per-dir prefix: /var/www/plan/silver -> plan/silver
applying pattern '^([^/]+)/?$' to uri 'plan/silver'
add path info postfix: /var/www/plan -> /var/www/plan/silver
strip per-dir prefix: /var/www/plan/silver -> plan/silver
applying pattern '^([^/]+)/([^/]+)/?$' to uri 'plan/silver'
RewriteCond: input='/var/www//plan.php' pattern='-f' => not-matched
pass through /var/www/plan
darwin2kx
 
Posts: 9
Joined: Mon Oct 15, 2007 9:16 am

Postby richardk » Tue Apr 29, 2008 10:18 am

What were you requesting, /purchase/plan/silver? Try adding
Code: Select all
Options -MultiViews


"odds/hps_frontend" isn't in the log at all. Have you removed it or is it part of the problem?

There's a lot about /var/www/purchase.php, does that file exist? Is that the file it's supposed to rewrite to?

Also try
Code: Select all
# Catch all
RewriteCond /var/www/odds/hps_frontend/$1.php -f
RewriteRule ^([^/]+)/?$ /odds/hps_frontend/$1.php [QSA,L]

RewriteCond /var/www/odds/hps_frontend/$1.php -f
RewriteRule ^([^/]+)/([^/]+)/?$ /odds/hps_frontend/$1.php?p=$2 [QSA,L]

and
Code: Select all
# Catch all
RewriteCond %{REQUEST_URI} ^(/[^/]+)(/.*)?$
RewriteCond %{DOCUMENT_ROOT}/odds/hps_frontend%1.php -f
RewriteRule ^([^/]+)/?$ /odds/hps_frontend/$1.php [QSA,L]

RewriteCond %{REQUEST_URI} ^(/[^/]+)(/.*)?$
RewriteCond %{DOCUMENT_ROOT}/odds/hps_frontend%1.php -f
RewriteRule ^([^/]+)/([^/]+)/?$ /odds/hps_frontend/$1.php?p=$2 [QSA,L]
richardk
 
Posts: 8800
Joined: Wed Dec 21, 2005 7:50 am


Return to Friendly URLs with Mod_Rewrite

Who is online

Users browsing this forum: No registered users and 103 guests

cron