Home Multiple htaccess rewrite rule

# Multiple htaccess rewrite rule

Catalin Macovei
1#
Catalin Macovei Published in 2013-07-01 19:36:03Z
 here is my code for .htaccess file Options -Indexes RewriteEngine On RewriteCond %(REQUEST_FILENAME) !-f RewriteCond %(REQUEST_FILENAME) !-d RewriteRule ^([a-z0-9]+)$/profile.php?username=$1 [L] RewriteRule ^([a-z0-9]+)$/display.php?page=$1 [L]  For the first one it works correctly and is displaying like this: www.site.com/user The second one is not working, normally is displaying like this www.site.com/display.php?page=10. I want to display the page like this www.site.com/article I tried different things and no result. Please tell me how to make to work with multiple rules. Also please give me an advice on how to use this functionalities in php because I think I done something not really good. My php code for using this rule is: 

 It works, but maybe is a better way to make a link to take advantage of htaccess.
Jon Lin
2#
Jon Lin Reply to 2013-07-01 20:46:54Z
 The two rules that you have conflict, the patterns used are exactly the same, which means, other than the conditions which only get applied to the first rule, the two rules are completely indistinguishable. Given this URL: http://www.site.com/blah  Is "blah" a page or a user? Can't tell, because the regex pattern (^([a-z0-9]+)$) for both rules matches "blah". So, the first one will always get applied no matter what. You need to add something to distinguish between the 2, like including a "user" or "page" in the URL: http://www.site.com/user/blah http://www.site.com/page/bleh  And your rules would look like: Options -Indexes RewriteEngine On RewriteCond %(REQUEST_FILENAME) !-f RewriteCond %(REQUEST_FILENAME) !-d RewriteRule ^user/([a-z0-9]+)$ /profile.php?username=$1 [L] RewriteCond %(REQUEST_FILENAME) !-f RewriteCond %(REQUEST_FILENAME) !-d RewriteRule ^page/([a-z0-9]+)$ /display.php?page=$1 [L]  Guilherme Pichok 3# Guilherme Pichok Reply to 2017-03-30 18:54:34Z  Options -Indexes RewriteEngine On RewriteCond %(REQUEST_FILENAME) !-f RewriteCond %(REQUEST_FILENAME) !-d RewriteRule ^user/([a-z0-9]+)$ /profile.php?username=$1 [N] RewriteRule ^page/([a-z0-9]+)$ /display.php?page=$1 [L]  use [N] (next) continue adding rules to the same condition and [L] (last) to identify the last rule Enzo 4# Enzo Reply to 2016-07-01 05:30:48Z  I made it working like this. RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /domain/index.php/$1 [C] #second condition and rule RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /domain/subdir/index.php/\$1 [L] 
 You need to login account before you can post.
Processed in 0.400735 second(s) , Gzip On .