如何使用.htaccess正确重定向?

时间:2019-02-05 12:09:07

标签: php apache .htaccess

此刻,我正在为网站设计项目。我只有一个问题。我的.htaccess无法正确重定向。

在我的项目中,用户可以注册,并且有一个成员列表。成员列表按A到Z排序,您可以在页面上选择它,如下所示: Click here单击字母时,它将向您显示在该特定字母上注册的用户

问题在于它不会像我在.htaccess中一样重定向

我尝试了很多事情并尝试进行搜索,但是找不到任何解决方法

.htaccess的外观如下:

RewriteRule ^memberlist memberlist.php

RewriteRule ^memberlist/show/(.*) memberlist.php?show=$1

这在PHP文件中

echo $content_1;
for($letter = 0; $letter <= 13; $letter++) {
    echo "- <a href='/memberlist/show/".$array[$letter]."'>".$array[$letter]."</a> \n";
}
echo "-<br> \n";
for($letter = 14; $letter <= 25; $letter++) {
    echo "- <a href='/memberlist/show/".$array[$letter]."'>".$array[$letter]."</a> \n";
}
echo "-<br> \n";
for($cijfer = 1; $cijfer <= 9; $cijfer++) {
    echo "- <a href='/memberlist/show/".$cijfer."'>".$cijfer."</a> \n";
}

正如您在代码中看到的那样,我想将用户重定向到这样的特定字母:mydomain.com/memberslist/show/A,但是它不起作用,如果我执行mydomain.com/memberslist.php吗? show = A它将起作用。

对不起,我英语不好(我是荷兰人)

1 个答案:

答案 0 :(得分:2)

规则RewriteRule ^memberlist memberlist.php甚至对于mydomain.com/memberlist/show/A也将匹配,因为正则表达式^memberlist仅检查路径是否以memberlist开头。

相反,将第一个规则写为:

RewriteRule ^memberlist$ memberlist.php

$表示在成员列表之后字符串必须结束。这意味着它将仅匹配mydomain.com/memberlist

要添加,您可以通过以下站点轻松测试您的规则:https://htaccess.madewithlove.be/
它将向您显示哪些规则匹配给定的URL。请记住,将选择第一个匹配的规则。这意味着另一种解决方案就是颠倒您的规则,以便更具体的规则排在第一位。