Php htaccess。如何限制动态页面以匹配数据库

Php htaccess。如何限制动态页面以匹配数据库,php,.htaccess,Php,.htaccess,这些是我添加的代码,我们发现页面没有正确重定向。Firefox检测到服务器正在以一种永远无法完成的方式重定向对此地址的请求。此问题有时可能是由于禁用或拒绝接受Cookie造成的 <? ob_start(); session_start(); ob_end_clean(); $title = "Antalya Apartments For Sale, Turkey Property"; $slink = "antalya_apart

这些是我添加的代码,我们发现页面没有正确重定向。Firefox检测到服务器正在以一种永远无法完成的方式重定向对此地址的请求。此问题有时可能是由于禁用或拒绝接受Cookie造成的

<? 
 ob_start(); session_start(); ob_end_clean(); 

$title              = "Antalya Apartments For Sale, Turkey Property";
$slink              = "antalya_apartment.php"; 
$default_bolge      = 4; 
$sql_emlak_turleri  = " ( emlakkayit.eturu='1' ) "; 
$canonical          = "antalya_apartment.php"; 

include "ust.php";

//bolgelerden birisi secilmis ise filtreleme yapilir
if($_GET[bid]>0) { $default_bolge = $_GET[bid]; } 

$sql_ek     = " AND emlakkayit.ilce='".$default_bolge."' "; 

//bolgeler
$sql = "SELECT
        bolge.id,
        bolge.bolge,
        count(emlakkayit.id)
    FROM
        bolge 
        LEFT JOIN emlakkayit ON emlakkayit.ilce=bolge.id 
    WHERE ".$sql_emlak_turleri." 
    GROUP BY bolge.id 
    ORDER BY bolge.bolge ASC " ;    
//$sql = "SELECT id,bolge FROM bolge ORDER BY bolge ASC " ; 
$DB->sorgula($sql); $syc=0;  
while($bolgeler = $DB->satirgetir($DB->sorgu_id))
{
$syc++;
$blg[$syc][id]      = $bolgeler[0];
$blg[$syc][bolge]   = $bolgeler[1];
$blg[$syc][ks]      = $bolgeler[2];
}
$DB->kapat($DB->sorgu_id);

$sql = "SELECT
        bolge.id,
        bolge.bolge,
        count(emlakkayit.id)
    FROM
        bolge 
        LEFT JOIN emlakkayit ON emlakkayit.ilce=bolge.id 
    WHERE 
        ".$sql_emlak_turleri." ".$sql_ek."
    GROUP BY bolge.id 
    ORDER BY bolge.bolge DESC " ;   
$DB->sorgula($sql); $sayac=0;  
while($bolgeler = $DB->satirgetir($DB->sorgu_id))
{
$sayac++;
$bolgeler_dizi[$sayac][id]      = $bolgeler[0];
$bolgeler_dizi[$sayac][bolge]   = $bolgeler[1];
$bolgeler_dizi[$sayac][ks]      = $bolgeler[2];
$toplam_kayit[$bolgeler[0]]     = $bolgeler[2];
if( $default_bolge==$bolgeler[0] ) $iste_bolgemiz = $bolgeler[1] ;
}

if ($sayac == 0) { ob_end_clean(); header('Location: http://www.turkish-property-world.com/antalya_apartment.php'); die; }

$DB->kapat($DB->sorgu_id);
//bolgeler diziye atildi

//paging on hazirlik
$goruntu_sayisi = 5 ;
$toplam_kayit_s = $toplam_kayit[$default_bolge] ;
$off            = "";
$paging_sayfa_sayisi = ceil($toplam_kayit_s / $goruntu_sayisi) ;
if($paging<=0) { $baslangic = 0 ; } else { $baslangic = $paging*$goruntu_sayisi ; }
?>
404来自脚本
在您的脚本中,我只需检查产品的数量(在输出任何内容之前),如果没有产品,则执行

header("HTTP/1.0 404 Not Found");
die;
或者,如果您的页面使用FastCGI:

header("Status: 404 Not Found");
die;
返回到其他页面

既然出现了404个可能为你的页面带来的搜索引擎优化结果,你可能会考虑重定向到你的起始页面(或者类似的东西)。 在您的

antalya_公寓.php
中,使用头重定向

header('Location: http://www.turkish-property-world.com/antalya_apartment.php');
die;
。。。或者,您也可以选择更改数据(例如更改
bid
page
vars)

特定页面的逻辑 您可以将以下内容放在php脚本的顶部:

if ($_GET['bid']==4 && $_GET['page']==9)
{
    header("HTTP/1.0 404 Not Found");
    die;
}
在您的情况下,执行特定重定向:

<? 

// Right at the top do your checking/redirecting/...
if ($_GET['bid']==4 && $_GET['page']==9)
{
    header("HTTP/1.0 404 Not Found");
    die;
}

ob_start();  
session_start();

$title              = "Antalya Apartments For Sale, Turkey Property";
$slink              = "antalya_apartment.php"; 
$default_bolge      = 4; 
$sql_emlak_turleri  = " ( emlakkayit.eturu='1' ) "; 
$canonical          = "antalya_apartment.php"; 

include "ust.php";

// ...

我想在htaccess/antalya_公寓.php?bid=2&page=232/antalya_公寓.php?bid=2&page=233/antalya_公寓.php?bid=2&page=234/antalya_公寓.php?bid=2&page=236/antalya_公寓.php?bid=2&page=239/antalya_公寓.php?bid=2&page=241不要这样做。。。这将对你的搜索引擎优化产生巨大的负面影响。搜索引擎可能会开始报告antalya_公寓.php
返回404,不管URL参数如何。您最好只显示一条类似于
Bid ID#2的消息。
或者如果
页面
参数超出范围,则将用户重定向到最后一个有效的结果页面。我担心会弄乱php代码。我已经知道导致问题的确切URL。我如何在htaccess中为这个特定的页面/antalya_repartment.php提供404?bid=2&page=232有没有一种方法可以调整类似的内容?也许我也有同样的问题。当然,如果没有合理的数据,最好将其发布在您的问题中,让其他人也可以跟踪。。。。我修改它以显示更多的周围代码!你必须把它放在while循环的后面,因为在那里你为每个记录增加
$sayac
,你知道当它仍然是
0
时,没有结果。(但您还应该真正寻找转义数据,以防止sql注入!)此外,您可能需要在
头(…)
之前调用
ob\u end\u clean()
,否则它可能仍然在缓冲您正在做的任何事情,因此只显示一个空白页面!但是,您是否尝试插入我在回答的最后一点中解释的动态重定向?你找到放密码的地方了吗?唯一的更改是在
///code>注释中进行的,正如您在接近脚本结尾时看到的那样。此注释不是针对顶部的,而是在
///code>中的while循环之后进行的逻辑。。。我只是说,无论您选择做什么,都需要首先结束输出缓冲!(
ob\u end\u clean()
例如)
// ...
$sql = "SELECT
        bolge.id,
        bolge.bolge,
        count(emlakkayit.id)
    FROM
        bolge 
        LEFT JOIN emlakkayit ON emlakkayit.ilce=bolge.id 
    WHERE 
        ".$sql_emlak_turleri." ".$sql_ek."
    GROUP BY bolge.id 
    ORDER BY bolge.bolge DESC " ;   
$DB->sorgula($sql); $sayac=0;  
while($bolgeler = $DB->satirgetir($DB->sorgu_id))
{
$sayac++;
$bolgeler_dizi[$sayac][id]      = $bolgeler[0];
$bolgeler_dizi[$sayac][bolge]   = $bolgeler[1];
$bolgeler_dizi[$sayac][ks]      = $bolgeler[2];
$toplam_kayit[$bolgeler[0]]     = $bolgeler[2];
if( $default_bolge==$bolgeler[0] ) $iste_bolgemiz = $bolgeler[1] ;
}

//////////////////////////////////////////////////
if ($sayac == 0)
{
    header('Location: http://www.turkish-property-world.com/antalya_apartment.php');
    die;
}
//////////////////////////////////////////////////

$DB->kapat($DB->sorgu_id);
//bolgeler diziye atildi

//paging on hazirlik
$goruntu_sayisi = 5 ;
$toplam_kayit_s = $toplam_kayit[$default_bolge] ;
$off            = "";
$paging_sayfa_sayisi = ceil($toplam_kayit_s / $goruntu_sayisi) ;
if($paging<=0) { $baslangic = 0 ; } else { $baslangic = $paging*$goruntu_sayisi ; }
?>