您定义规则的方式增加了复杂性。
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .* - [L]
上述规则意味着如果文件名是文件处理的目录,因为它是。之后不要再处理。
RewriteRule ^(.*)$ http://www.website.com/profile.php?u=$1 [NC]
这条规则意味着任何请求URI映射到profile.php?u=
现在,当你要求/
是www.website.com
它检查的第一条规则,它不能匹配。然后检查第二条规则并将其映射到profile.php?u=
。
- 人去修补,方法是检查*如果
$_GET['u']
为空或profile.php
/
。如果是,则加载index.php
。
另一种方法是找到适当的正则表达式为您的用户名一旦发现使用它在这里。
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(USERNAME_REGEX)$ http://www.website.com/profile.php?u=$1 [NC,L]
来处理,这是使用PHP的最好方法,
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?uri=$1 [L]
现在index.php
将获得每次通过URI。现在您可以在index.php
中处理URI。
这是'.htaccess'文件在'www.website.com'主机的文档根目录上吗? –