.htaccess Mod-Rewrite规则不起作用?

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.