leonglass Posted October 4, 2007 Share Posted October 4, 2007 I seem to be having a problem understanding how mod_rewrite is supposed to work. I have searched this board but can't seem to answer my question so here goes. I want to implement clean urls so I have planned to rewrite http://localhost/gamvc/users into http://localhost/gamvc/index.php?module=users but seem to be unable to make it work. I am working with Apache 2.2.6 on a Linux box where the public dir is /var/www/localhost/htdocs/ and my test site is in a sub dir of that named gamvc. In the dir gamvc I have the file index.php and a .htaccess file the contents of which are: RewriteEngine On RewriteRule ^gamvc/([alpha]+) gamvc/index.php?module=$1 [L] My htaccess file is definitely being accessed as I have verified this by causing internal server errors by placing an invalid directive in it. The contents of the index.php file are print "{$_SERVER['REQUEST_URI']} <br />"; print "<a href='http://localhost/gamvc/users'>A Link</a>"; which gives me a web page displaying /gamvc/index.php A Link but always generates The requested URL /gamvc/users was not found on this server. when I click the link. I have tried adding RewriteBase / and /gamvc as directed in most of the posts I found here. I have also had the rule starting ^/?gamvc to try and account for the leading slash but my understanding is that this should not be required on a 2.x server. As far as my limited understanding goes the above rule should check for one or more alpabetical characters after gamvc/ and store it in the $1 atom. This atom should then be appended after the = sign in the target part. Can anybody point out where my understanding has gone wrong. Thanks. Link to comment https://forums.phpfreaks.com/topic/71845-problem-understanding-rewrite/ Share on other sites More sharing options...
leonglass Posted October 4, 2007 Author Share Posted October 4, 2007 RewriteEngine On RewriteBase /gamvc RewriteRule ^([^/]+) index.php?module=$1 [PT] This sorted it out. Does anyone know why my character class didn't work. [alpha] didn't match and [:alpha:] caused an internal server error. Link to comment https://forums.phpfreaks.com/topic/71845-problem-understanding-rewrite/#findComment-361967 Share on other sites More sharing options...
leonglass Posted October 4, 2007 Author Share Posted October 4, 2007 This now puts index.php into $_GET['module'] so it must be looping back and rematching. I changed the flag to [L] but this did not change it. I can also remove RewriteBase /gamvc and it still works. Looks like I still need some help. ??? Link to comment https://forums.phpfreaks.com/topic/71845-problem-understanding-rewrite/#findComment-361984 Share on other sites More sharing options...
hackerkts Posted October 6, 2007 Share Posted October 6, 2007 Options +Indexes Options +FollowSymlinks RewriteEngine on RewriteRule ^(.*)/([a-zA-Z0-9]+)$ $1/index.php?module=$2 Not sure if it works, but give it a try. Link to comment https://forums.phpfreaks.com/topic/71845-problem-understanding-rewrite/#findComment-363169 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.