Mod-rewrite和php在get方法中不起作用


Mod-rewrite and php not working in in get method

在 mod-rewrite 中遇到问题。HTACCESS 和 php。我有一个页面名称users.php此页面显示所选用户,我的正常链接是这样的users.php?member=John然后我将其更改为像这样清理的 url users/member/John但我的问题是当您使用普通 url 访问该页面时它会正常工作,但现在我已经在我的.HTACCESS它将带我到用户页面,但没有信息将显示它将为空

这是我的.HTACCESS

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}'s/+users'.php'?member=([^'s&]+) [NC]
RewriteRule ^ users/member/%1? [R=301,L]
RewriteRule ^users/member/([^/]+)/?$ users.php?member=$1 [L,QSA]

这是我的PHP代码

<?php
  if(isset($_GET['member'])) { 

include($root . '_inc/dbconn.php');
try{
      $db_conn = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME,DB_USERNAME,DB_PASSWORD);
      $db_conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
      $stmtData = $db_conn->prepare("SELECT * FROM users WHERE username=:getmember ");
      $stmtData->bindParam(":getmember", $_GET['member']);
      $stmtData->execute();
    $UserData = $stmtData->fetch(PDO::FETCH_OBJ);
    if ($UserData) {
         $Dusername  = $UserData->username;
         $Dphoto = $UserData->photo;
         $Demail = $UserData->email;
      }
}
catch(PDOException $e)
    {
    echo "Error:" . $e->getMessage();
    }
$db_conn = null;
}
?>
<?php echo $Dusername;?>

问题是你的RewriteCond.您必须否定条件(请注意"!"符号):

RewriteCond %{REQUEST_URI} !^[A-Z]{3,}'s/+users'.php'?member=([^'s&]+) [NC]
RewriteRule ^users/member/%1? [R=301,L]
RewriteRule ^users/member/([^/]+)/?$ users.php?member=$1 [L,QSA]

您可以在在线 htaccess 测试器上测试您的重写规则。