0

我正在努力让我的网站 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我尝试了很多组合但是这个不管用。

如果任何专家可以给我至少一些提示,那就太好了。

4

1 回答 1

0

至于1),它可能与上述规则没有任何关系。如果/dinesh存在,您应该在那里查看。如果它不存在,您应该查看/profile.php,这可能是将您重定向到主页的原因。

至于2),你的规则:

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

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

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

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

于 2012-10-25T02:53:05.783 回答