在 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 测试器上测试您的重写规则。