So right now, I have my website rerouting from www.example.com/username to their profile page, but I want it to reroute from www.example.com/users/username. My code currently is this:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^([^\.]+)$ $1.php [NC]
RewriteCond %{REQUEST_FILENAME} >""
RewriteRule ^([^\.]+)$ profile.php?user=$1 [L]
I have tried using this code, yet it gives me an error saying that the page cannot be found:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^users/([^\.]+)$ $1.php [NC]
RewriteCond %{REQUEST_FILENAME} >""
RewriteRule ^users/([^\.]+)$ profile.php?user=$1 [L]
I have tried other options, but I cannot seem to get them to work. Will I need an actual /users folder, or should this be redirecting without the use of another folder?
You can use these rules in the given order:
RewriteEngine on
RewriteRule ^users/([\w-]+)/?$ profile.php?user=$1 [L,QSA,NC]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+?)/?$ $1.php [L]
This rule:
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^users/([^\.]+)$ $1.php [NC]
Will rewrite /users/foo.php
to foo.php
I don't think that's what you want.
I think it's as simple as:
RewriteRule ^users/(.+)$ profile.php?user=$1 [NC]
If the folder users
doesn't exist you don't need a RewriteCond
If you want [^\.]+
instead of .+
that's fine but I don't think you need it.