我有以下.htaccess文件:
RewriteEngine On
RewriteBase /
RewriteRule ^/(.*)/(.*)/(.*)$ index.php?pageLevel1=$1&pageLevel2=$2&pageLevel3=$3 [L,R=301]
当我使用http://www.domain.com/testpage/访问我的网站时,它会给我404 Not Found错误。我做错了什么?
PS:目前index.php文件只是回显了pageLevel1,pageLevel2和pageLevel3值。
答案 0 :(得分:3)
从重写模式中删除前导斜杠
RewriteEngine On
RewriteBase /
RewriteRule ^(.*)/(.*)/(.*)$ index.php?pageLevel1=$1&pageLevel2=$2&pageLevel3=$3 [L,R=301]
答案 1 :(得分:1)
首先,我不知道你为什么要使用301重定向?如果你想接受网址中的所有字符,你只需要有一个像这样的全能重写规则:
void OnMatchList(ListMatchResponse matchList)
{
if (matchList.Count == 0)
{
CreateMatchRequest match = new CreateMatchRequest();
match.name = "OrionPongRoom";
match.size = 2;
match.advertise = true;
match.password = "";
networkMatch.CreateMatch(match, OnMatchCreate);
}
else
Debug.Log ("******matches found"+matchList.Count);
}
如果你想捕捉你定义的参数,重写规则可以是这样的:
RewriteRule ^(.*)$ index.php?param=$1 [L]
<强>更新强>
您的案例中已完成的规则(三个页面级别),其中URL slugs接受字母和数字可以是:
RewriteRule ^([A-Za-z-]+)/([A-Za-z-]+)/([A-Za-z-]+)$ index.php?pageLevel1=$1&pageLevel2=$2&pageLevel3=$3 [L]
这样您就可以访问以下页面:
RewriteRule ^([A-Za-z0-9-]+)$ index.php?pageLevel1=$1&pageLevel2=$2 [L]
RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+)$ index.php?pageLevel1=$1&pageLevel2=$2 [L]
RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)$ index.php?pageLevel1=$1&pageLevel2=$2&pageLevel3=$3 [L]