Apache url rewrite works in htaccess but not in [login to view URL]
The following is a detailed description of the problem taken from a post I made at a forum. servername, IP, email address blocked out with ***.
Linux Fedora/php5/Apache1.3.37
Successful bidder will get an exact copy of my [login to view URL] file to work on because I can't have the Apache server continually restarted to test. Payment for successful outcome only.
----
this url:
/Keith-Nelson/faves/15/[login to view URL]
needs to be rewritten to:
/[login to view URL]
The following rewrite for this works in an htacces file but not in the [login to view URL]:
RewriteEngine On
RewriteRule ^[^/]+/faves/([^/]+)/([^/]+).html$ [login to view URL]$1 [L]
RewriteRule ^faves/([^/]+)/([^/]+).html$ [login to view URL]$1 [L]
Here it is in the [login to view URL]
<VirtualHost [login to view URL]:80>
ServerAdmin awarner@***.com
DocumentRoot /sites/***.com/html
ServerName ***.com
ErrorLog /var/log/httpd/site3-error_log
CustomLog /var/log/httpd/site3-access_log common
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^[^/]+/faves/([^/]+)/([^/]+).html$ [login to view URL]$1 [L]
RewriteRule ^faves/([^/]+)/([^/]+).html$ [login to view URL]$1 [L]
</IfModule>
</VirtualHost>
------ COMMENT:-----
You must use
RewriteRule ^/[^/]+/faves/([^/]+)/([^/]+).html$ /[login to view URL]$1 [L]
RewriteRule ^/faves/([^/]+)/([^/]+).html$ /[login to view URL]$1 [L]
instead (note the leading slashes).
------ COMMENT:-----
I tried it and restarted server but no luck. I'm going to try something really basic just to make sure rewrite is working
------ COMMENT:-----
I tried this, which redirects everything to [login to view URL], and it works:
<VirtualHost [login to view URL]:80>
ServerAdmin awarner@***.com
DocumentRoot /sites/***.com/html
ServerName ***.com
ErrorLog /var/log/httpd/site3-error_log
CustomLog /var/log/httpd/site3-access_log common
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond $1 !^([login to view URL]|images|[login to view URL])
RewriteRule ^(.*)$ /[login to view URL]$1 [L]
</IfModule>
</VirtualHost>
------ COMMENT:-----
> but no luck
What can you find in your rewriteLog?
You can start logging with
RewriteLog logs/[login to view URL]
RewriteLogLevel 5
------ COMMENT:-----
It's just getting passed through:
[login to view URL] - - [06/Nov/2006:08:11:00 -0500] [***.com/sid#9504f74][rid#95f372c/initial] (2) init rewrite engine with requested uri /Dryden-Mitchell/faves/465/[login to view URL]
[login to view URL] - - [06/Nov/2006:08:11:00 -0500] [***.com/sid#9504f74][rid#95f372c/initial] (1) pass through /Dryden-Mitchell/faves/465/[login to view URL]
<VirtualHost [login to view URL]:80>
ServerAdmin awarner@***.com
DocumentRoot /sites/***.com/html
ServerName ***.com
ErrorLog /var/log/httpd/site3-error_log
CustomLog /var/log/httpd/site3-access_log common
#ErrorDocument 404 /[login to view URL]
RewriteLog /var/log/httpd/[login to view URL]
RewriteLogLevel 5
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^/[^/]+/faves/([^/]+)/([^/]+).html$ /[login to view URL]$1 [L]
RewriteRule ^/faves/([^/]+)/([^/]+).html$ /[login to view URL]$1 [L]
</IfModule>
</VirtualHost>
------ COMMENT:-----
That means that the line 'RewriteEngine on' is present in per-server context, but the complete ruleset processing (checking the rule-pattern "applying pattern ...") is missing at all. So the RewriteRule directives are missing someway but we know that the virtual host did match, because if not we wouldn't find that log entry (RewriteLogLevel defined only for VirtualHost ******:80). Something other outside the RewriteRule directive must be wrong here.