htaccess规则......无法解决

时间:2012-10-24 15:15:30

标签: .htaccess

我正在努力让我的网站htaccess工作......但没有运气..

下面是代码

<IfModule mod_rewrite.c>
   Options +FollowSymLinks
   RewriteEngine On
   RewriteBase /
   RewriteCond %{HTTP_HOST} ^example\.com$ [NC] 
   RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{REQUEST_FILENAME} !-d 
   RewriteRule ^([^/]+)/?  /profile.php?username=$1 [L,NC]
 </IfModule>

这很好没有问题..但是当我添加一些东西时它将无法工作..在下列情况下 -

1)例如,当我输入example.com/dinesh时,它会将我重定向到www.example.com(总是主页而不是我希望它是www.example.com/dinesh

2)现在我有另外一个带有两个参数的users.php,当我传递一个参数它应该执行这个规则profile.php但是当我传递两个参数然后它应该把我带到user.php我尝试了这么多组合,但这不起作用。

如果有任何专家能给我一些很棒的提示。

1 个答案:

答案 0 :(得分:0)

至于 1),它可能与上述规则无关。如果/dinesh存在,您应该查看。如果它不存在,你应该查看/profile.php,这可能是你将你重定向到主页的。

至于 2),您的规则是:

RewriteRule ^([^/]+)/?  /profile.php?username=$1 [L,NC]

匹配URI:/something/else,因为正则表达式没有字符串结束匹配。它匹配第一个something,这就足够了。如果您在结尾添加$,则与/something/else不匹配。

RewriteRule ^([^/]+)/?$  /profile.php?username=$1 [L,NC]

或者,您可以将路由到user.php 之前的其他规则放在路由到配置文件的规则之前。但最好有$