Php 找不到htaccess URL

Php 找不到htaccess URL,php,.htaccess,friendly-url,Php,.htaccess,Friendly Url,我有一个.htaccess文件和其中的代码: #command_players RewriteRule ^command_players/([0-9]+)?$ command_players.php?id=$1 [NC,L] 当用户输入正确时,我的登录页面应重定向到command_players.php页面: if(密码验证($\u POST['pass'],$results['pass'])){ $\会话['command']='ok'; $\会话['id']=$results['id'];

我有一个.htaccess文件和其中的代码:

#command_players
RewriteRule ^command_players/([0-9]+)?$ command_players.php?id=$1 [NC,L]
当用户输入正确时,我的登录页面应重定向到command_players.php页面:

if(密码验证($\u POST['pass'],$results['pass'])){
$\会话['command']='ok';
$\会话['id']=$results['id'];
重定向(“command_players/$results[id]/”;
}
但我得到一个错误,比如:

在此服务器上找不到请求的URL/site/command\u players/18/

/site/command\u players.php
工作时


我不擅长htaccess,我做错了什么?

您需要在htaccess文件的正则表达式中包含斜杠(
/
),如下所示

表示“零或前一个”,因此
/?
表示“无斜线或一个”,这与您描述的模式相对应

#command_players
RewriteRule ^command_players/([0-9]+)/?$ command_players.php?id=$1 [NC,L]
有用的资源

  • 常用规则/提示
  • 测试正则表达式的工具

问题是关于文件夹的,我在登录重定向中错过了“/”。现在它可以工作了:

#command_players
RewriteRule ^command_players/([0-9]+)/?$ site/command_players.php?id=$1 [NC,L]



 if (password_verify($_POST['pass'], $results['pass'])) {
                                $_SESSION['command']= 'ok';
                                $_SESSION['id'] = $results['id'];
                                //redirect("command/list.php/$results[id]/");
                                redirect("/command_players/{$results['id']}/");
                            }

您的重写规则既不包含
site/
前缀,也不包含请求URL中的
/
后缀
…players/18/
尝试以下操作:
RewriteRule^command\u players/([0-9]+)?$/site/command\u players.php?id=$1[NC,L]
具有具有“相同”名称(减去后缀)的脚本文件在这些情况下,文件夹通常会导致麻烦;尝试禁用多视图。谢谢您的建议。我使用了:#command_players RewriteRule^ command_players/([0-9]+)/?$command_players.php?id=$1[NC,L]复制您的建议,但不幸的是问题仍然存在。