1

我的问题是我的 .htaccess 和 url 解释设置不成功,我希望能得到帮助,因为我自己无法解决我的问题。

我的症状

  1. 当 url 是或时,我的唯一index.php没有问题www.domain.p.htwww.domain.p.ht/index.php
  2. 如果 urlwww.domain.p.ht/yazılar再次出现,它会按我的预期显示
  3. 但是如果 url 是www.domain.p.ht/iletişim OR www.domain.p.ht/etiketler,html 会打印与 url 相同的页面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]
    

我的 php 代码来解释 url 并确定页面标识符变量是$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';
}

我究竟做错了什么?为什么我有第三个症状?

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 天后,我注意到我应该使用==而不是=全部使用,$_GET['rd_sayfa'] = 'whatever'因为单个 =操作$sayfawhile==的值只比较值。所以我将它们全部替换为$_GET['rd_sayfa'] == 'yazılar',现在我的链接正在工作。

于 2013-03-11T18:24:42.827 回答