我正在努力让我的网站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我尝试了这么多组合,但这不起作用。
如果有任何专家能给我一些很棒的提示。
答案 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
之前的其他规则放在路由到配置文件的规则之前。但最好有$
。