1

私の問題は、.htaccess と URL の解釈のセットアップがうまくいかないことです。自分で問題を解決できなかったので、助けてもらいたいと思っています。

私の症状

  1. URLwww.domain.p.htまたは_www.domain.p.ht/index.php
  2. URLがwww.domain.p.ht/yazılar再び表示される場合、期待どおりに表示されます
  3. しかし、url がwww.domain.p.ht/iletişim OR www.domain.p.ht/etiketlerの場合、html は URL が OR の場合と同じページを出力します。www.domain.p.ht/yazılar

    私の.htaccessコード全体

    Options +FollowSymlinks
    RewriteEngine On
    RewriteBase /    
    
    RewriteRule ^(.*)/$ /$1 [L,R=301]    
    
    RewriteRule ^yazılar/(.+)/(.+)$ index.php?rd_sayfa=yazilar&rd_ozne=$1&rd_nesne=$2 [L]    
    
    RewriteRule ^yazılar/(.+)$ index.php?rd_sayfa=yazilar&rd_ozne=$1 [L]
    RewriteRule ^etiketler/(.+)$ index.php?rd_sayfa=etiketler&rd_ozne=$1 [L]    
    
    RewriteRule ^iletişim$ index.php?rd_sayfa=iletisim [L]
    RewriteRule ^etiketler$ index.php?rd_sayfa=etiketler [L]
    RewriteRule ^yazılar$ index.php?rd_sayfa=yazilar [L]
    RewriteRule ^site-haritası$ index.php?rd_sayfa=site_haritasi [L]
    RewriteRule ^hakkında$ index.php?rd_sayfa=hakkinda [L]
    RewriteRule ^ara$ index.php?rd_sayfa=arama [L]
    RewriteRule ^yorum-doğrula$ index.php?rd_sayfa=yorum_dogrula [L]
    RewriteRule ^eposta-doğrula$ index.php?rd_sayfa=eposta_dogrula [L]
    RewriteRule ^yorumunuz-için-teşekkür-ederim$ index.php?rd_sayfa=yorum_onay [L]
    RewriteRule ^epostanız-için-teşekkür-ederim$ index.php?rd_sayfa=eposta_onay [L]
    

URLを解釈し、ページ識別子変数を決定するための私のphpコード$sayfa

$sayfa = '';

$actual_link = 'http://'.$_SERVER["HTTP_HOST"].$_SERVER["REQUEST_URI"];

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['rd_sayfa']) AND $_GET['rd_sayfa'] != '')
{
    if ($getsayaci == 1)
    {
        if ($_GET['rd_sayfa'] = 'yazılar') {$sayfa = 'yazilar';}
        else if ($_GET['rd_sayfa'] = 'iletişim') {$sayfa = 'iletisim';}
        else if ($_GET['rd_sayfa'] = 'site-haritası') {$sayfa = 'site_haritasi';}
        else if ($_GET['rd_sayfa'] = 'etiketler') {$sayfa = 'etiketler';}
        else if ($_GET['rd_sayfa'] = 'yorum-doğrula') {$sayfa = 'yorum_dogrula';}
        else if ($_GET['rd_sayfa'] = 'eposta-doğrula') {$sayfa = 'eposta_dogrula';}
        else if ($_GET['rd_sayfa'] = 'yorumunuz-için-teşekkür-ederim') {$sayfa = 'yorum_onay';}
        else if ($_GET['rd_sayfa'] = 'epostanız-için-teşekkür-ederim') {$sayfa = 'eposta_onay';}
        else if ($_GET['rd_sayfa'] = 'hakkında') {$sayfa = 'hakkinda';}
        else if ($_GET['rd_sayfa'] = 'ara') {$sayfa = 'arama';}
        else {$sayfa = 'olmayan_sayfa';}
    }

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

        else if (isset($_GET['rd_nesne']) AND $_GET['rd_nesne'] != '' AND $getsayaci == 3)
        {
            if ($_GET['rd_sayfa'] = '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';
}

私は何を間違っていますか?なぜ私は3番目の症状を持っているのですか?

4

2 に答える 2

1

私も.htaccessを使用してURLを変更し、iaはこのように使用しています。

RewriteEngine On
RewriteRule ^(services|testimonialdisclaimer|privacypolicy)\.php$ index.php?page=$1

だからあなたはこのように試すことができるかもしれません:

RewriteEngine On
RewriteRule ^(iletişim|etiketler|yazılar)$ index.php?rd_sayfa=$1
于 2013-03-11T17:57:37.430 に答える
0

Kabir の回答の後、私は自分の.htaccess構造が正しいと確信し、私の主な問題はURL.

html は常に異なるリンクに対して同じ出力を出力するため$sayfa、リンクによって値が変化しないと再度仮定しました。

そして 4 日後、値を比較するだけでシングルが値を操作するため、すべてではなく==Iを使用する必要があることに気付きました。だから私はそれらをすべてに置き換えました。今、私のリンクは機能しています。=$_GET['rd_sayfa'] = 'whatever' =$sayfa==$_GET['rd_sayfa'] == 'yazılar'

于 2013-03-11T18:24:42.827 に答える