0

根据下面的代码:

如果手动输入的url是:http://www.mydomain.com/nonexistingpage

那么根据CODE 2$_GET['page'] == 'nonexistingpage'

所以$sayfa值被分配为olmayan_sayfa'

,我在CODE 3中说如果$sayfa == olmayan_sayfa;然后加载pageis_olmayan_sayfa.inc.php页面。

但我得到了 404 页。

我什至无法加载 1 pageis_olmayan_sayfa.inc.php页。所有其他情况都很好,没有问题。

你能纠正我吗?

注意:我知道我可以通过 .htaccess 创建自定义 404 页面,但我想了解我的案例的原因和更正方法。

谢谢你,BR

代码 1:.htaccess,SEO 友好的链接部分

#SEO friendly linking
RewriteRule ^yazılar/(.+)/(.+)$ index.php?page=yazılar&subject=$1&object=$2 [L]
RewriteRule ^yazılar/(.+)$ index.php?page=yazılar&subject=$1 [L]
RewriteRule ^etiketler/(.+)$ index.php?page=etiketler&subject=$1 [L]
RewriteRule ^(iletişim|etiketler|yazılar|eposta-doğrula|epostanız-için-teşekkür-ederim|yorum-doğrula|yorumunuz-için-teşekkür-ederim|yazı-ekle|yazı-doğrula|yazınız-için-teşekkür-ederim)$ index.php?page=$1 [L]

代码 2:URL 解释,确定要分配给 $sayfa 的值

<?php
$sayfa = '';

if(!empty($_GET)) {$getsayaci = count($_GET);}

$url_check01 = htmlspecialchars($_SERVER['PHP_SELF'], ENT_QUOTES, 'utf-8');
$url_check02 = htmlspecialchars($_SERVER['SCRIPT_NAME'], ENT_QUOTES, 'utf-8');

if (isset($_GET['page']) AND $_GET['page'] != '')
{
    if ($getsayaci == 1)
    {
        if ($_GET['page'] == 'yazılar') {$sayfa = 'yazilar';}
        else if ($_GET['page'] == 'iletişim') {$sayfa = 'iletisim';}
        else if ($_GET['page'] == 'site-haritası') {$sayfa = 'site_haritasi';}
        else if ($_GET['page'] == 'etiketler') {$sayfa = 'etiketler';}
        else if ($_GET['page'] == 'yorum-doğrula') {$sayfa = 'yorum_dogrula';}
        else if ($_GET['page'] == 'eposta-doğrula') {$sayfa = 'eposta_dogrula';}
        else if ($_GET['page'] == 'yorumunuz-için-teşekkür-ederim') {$sayfa = 'yorum_onay';}
        else if ($_GET['page'] == 'epostanız-için-teşekkür-ederim') {$sayfa = 'eposta_onay';}
        else if ($_GET['page'] == 'hakkında') {$sayfa = 'hakkinda';}
        else if ($_GET['page'] == 'ara') {$sayfa = 'arama';}
        else if ($_GET['page'] == 'yazı-ekle') {$sayfa = 'yazi_ekle';}
        else if ($_GET['page'] == 'yazı-doğrula') {$sayfa = 'yazi_dogrula';}
        else if ($_GET['page'] == 'yazınız-için-teşekkür-ederim') {$sayfa = 'yazi_onay';}
        else {$sayfa = 'olmayan_sayfa';}
    }

    else if (isset($_GET['subject']) AND $_GET['subject'] != '')
    {
        if ($getsayaci == 2)
        {
            if ($_GET['page'] == 'yazılar') {$sayfa = 'yazarin_yazilari';}
            else if ($_GET['page'] == 'etiketler') {$sayfa = 'bir_etiket';}
            else if ($_GET['page'] == 'ara') {$sayfa = 'aranan';}
            else {$sayfa = 'olmayan_sayfa';}
        }

        else if (isset($_GET['object']) AND $_GET['object'] != '' AND $getsayaci == 3)
        {
            if ($_GET['page'] == 'yazılar') 
            {
                $sayfa = 'spesifik_yazi';
            }
            else
            {
                $sayfa = 'olmayan_sayfa';
            }
        }
        else
        {
            $sayfa = 'olmayan_sayfa';
        }
    }

    else
    {
        $sayfa = 'olmayan_sayfa';
    }
}

else if ($url_check01 == '/index.php' AND $url_check02 == '/index.php' AND ($actual_link == site1.'/' OR $actual_link == site2 ))
{
$sayfa = 'anasayfa';
}

else
{
$sayfa = 'olmayan_sayfa';
}

CODE 3:根据$sayfa值,加载相关页面

<?php
switch ($sayfa) 
{
case "anasayfa":
    require ("{$rootfolder}/load/pageis_anasayfa.inc.php");
    break;
case "yazilar":
    require ("{$rootfolder}/load/pageis_yazilar.inc.php");
    break;
case "iletisim":
    require ("{$rootfolder}/load/pageis_iletisim.inc.php");
    break;
case "eposta_dogrula":
    require ("{$rootfolder}/load/pageis_iletisim_dogrula.inc.php");
    break;
case "eposta_onay":
    require ("{$rootfolder}/load/pageis_iletisim_tesekkur.inc.php");
    break;
case "yorum_dogrula":
    require ("{$rootfolder}/load/pageis_yorum_dogrula.inc.php");
    break;
case "yorum_onay":
    require ("{$rootfolder}/load/pageis_yorum_tesekkur.inc.php");
    break;
case "etiketler":
    require ("{$rootfolder}/load/pageis_etiketler.inc.php");
    break;
case "bir_etiket":
    require ("{$rootfolder}/load/pageis_bir_etiket.inc.php");
    break;
case "yazarin_yazilari":
    require ("{$rootfolder}/load/pageis_yazarin_yazilari.inc.php");
    break;
case "spesifik_yazi":
    require ("{$rootfolder}/load/pageis_spesifik_yazi.inc.php");
    break;
case "yazi_ekle":
    require ("{$rootfolder}/load/pageis_yazi_ekle.inc.php");
    break;
case "yazi_dogrula":
    require ("{$rootfolder}/load/pageis_yazi_dogrula.inc.php");
    break;
case "yazi_onay":
    require ("{$rootfolder}/load/pageis_yazi_tesekkur.inc.php");
    break;
case "olmayan_sayfa":
    require ("{$rootfolder}/load/pageis_olmayan_sayfa.inc.php");
    break;
}
4

2 回答 2

1

一些常见的反馈,并没有直接解决您的问题,只是阻止它们:

#SEO friendly linking
...

与其将大量规则硬编码到网络服务器配置(.htaccess)中,不如在其中只有一条规则,将所有对不存在文件的请求定向到您的应用程序中。然后在脚本内部处理请求。

你有很多重复的代码。其中大部分可以通过创建配置数据数组来处理:

$translate = array(
    'yazılar'  => 'yazilar',
    'iletişim' => 'iletisim',
    '...'      => '...',
);

if (isset($translate[$_GET['page']])) {
    $sayfa = $translate[$_GET['page']];
}

switch ($sayfa)后面的完全一样。

于 2013-04-10T10:48:10.133 回答
1

nonexistingpage的 .htaccess 规则与您的不匹配。

于 2013-04-10T10:44:59.810 回答