繁体   English   中英

Mod重写和PHP无法在get方法中工作

[英]Mod-rewrite and php not working in in get method

在mod-rewrite .HTACCESS和php中遇到问题。 我有一个页面名称users.php该页面显示选定的用户,我的常规链接是这个users.php?member=John然后我将其更改为干净的url,例如this 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测试仪上测试您的重写规则。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM