.htaccess Mod-Rewrite 规则不起作用


.htaccess Mod-Rewrite Rule not working?

所以现在,我的网站从 www.example.com/username 重新路由到他们的个人资料页面,但我希望它从 www.example.com/users/username 重新路由。我目前的代码是这样的:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME}.php -f  
RewriteRule ^([^'.]+)$ $1.php [NC]
RewriteCond %{REQUEST_FILENAME} >""
RewriteRule ^([^'.]+)$ profile.php?user=$1 [L]

尝试使用此代码,但它给了我一个错误,说找不到该页面:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME}.php -f  
RewriteRule ^users/([^'.]+)$ $1.php [NC]
RewriteCond %{REQUEST_FILENAME} >""
RewriteRule ^users/([^'.]+)$ profile.php?user=$1 [L]

我尝试了其他选择,但我似乎无法让它们工作。我是否需要一个实际的/users 文件夹,或者应该在不使用另一个文件夹的情况下重定向?

您可以按给定顺序使用这些规则:

RewriteEngine on
RewriteRule ^users/(['w-]+)/?$ profile.php?user=$1 [L,QSA,NC]
RewriteCond %{REQUEST_FILENAME}.php -f  
RewriteRule ^(.+?)/?$ $1.php [L]

此规则:

RewriteCond %{REQUEST_FILENAME}.php -f  
RewriteRule ^users/([^'.]+)$ $1.php [NC]

/users/foo.php重写为foo.php我认为这不是您想要的。


我认为它就像

RewriteRule ^users/(.+)$ profile.php?user=$1 [NC]

如果文件夹users不存在,则不需要RewriteCond

如果你想要[^'.]+而不是.+那很好,但我认为你不需要它。