我正在努力让我的网站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,我尝试了很多组合,但这都不起作用。
如果任何专家能给我至少一些技巧,那将是很棒的。
发布于 2012-10-25 10:53:06
至于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的另一个规则放在路由到配置文件的规则之前。但最好是有$。
https://stackoverflow.com/questions/13052171
复制相似问题