2016-03-03 58 views
1

所以现在,我的网站从www.example.com/username重新路由到他们的个人资料页面,但我希望它从www.example.com/users/username重新路由。我的代码目前是这样的:.htaccess Mod-Rewrite规则不起作用?

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] 

我已经尝试过其他的选择,但我不能似乎让他们工作。我需要一个实际/用户文件夹,还是应该重定向而不使用另一个文件夹?

+0

这是什么呢? 'RewriteCond%{REQUEST_FILENAME}>“”''。我以前从来没有见过。 – Halcyon

+0

这是一个“词典字符串比较”(请参阅​​本页1/3左右):http://httpd.apache.org/docs/current/mod/mod_rewrite.html我不是100%确定它是有意义的它在这里使用的方式虽然... – CD001

+0

好的,但它对你有什么作用?这只是比字符串比较大吗? – Halcyon

回答

0

你可以在给定的顺序使用这些规则:

RewriteEngine on 

RewriteRule ^users/([\w-]+)/?$ profile.php?user=$1 [L,QSA,NC] 

RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule ^(.+?)/?$ $1.php [L] 
+1

谢谢!完美的作品。 –

0

这条规则:

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

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


我认为这是简单的:

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

如果文件夹users不存在如果你想[^\.]+,而不是.+这很好,你不需要RewriteCond

但我不认为你需要它。