URL manzilini o'zgartirish $ _SERVER ['REQUEST_URI']

This is my url: http://localhost/framework/index.php

echo $_SERVER['REQUEST_URI'];

Chiqdi: /framework/index.php

Lekin mening urlim bo'lsa:

http://localhost/framework/

Chiqish quyidagicha bo'ladi:

/framework/

Agar faylni ko'chirsam, bu fikrni qabul qilasiz.

Qanday papkalardan keyin/oxirida index.php faylidan tarkibni olaman? Mening fikrim: index.php ni oldingi nazorat vositasi sifatida ko'rsatish.

Agar menda:

http: //localhost/framework/index.php/test/test

Faqat sinov/test qismini xohlayman.

http://localhost/framework/test/test

Faqat sinov/test qismini xohlayman.

1
Men faqatgina $ _SERVER o'zgaruvchilariga qarayapman. Ko'rinib turibdiki, men istagan narsamni, hech qanday imkoniyat bermagan narsani topsam. PATH_INFO salohiyati bor edi, lekin men haqiqatdan ham qidirmayapman.
qo'shib qo'ydi muallif John, manba
Agar sizda papkalar bo'lsa, u ham qayta yo'naltiriladimi? CSS /
qo'shib qo'ydi muallif John, manba
mod_rewrite dan foydalaning va index.php/your/path uchun hamma narsani qayta yozing. Sizning .htaccess kabi ko'rinadi: gist.github.com/1320584 . Keyin Daveoning echimini ishonch bilan ishlatishingiz mumkin.
qo'shib qo'ydi muallif mAu, manba
Yo'q. Buning uchun RewriteCond% {REQUEST_FILENAME}! -D va RewriteCond% {REQUEST_FILENAME}! -F ni bosing. Ya'ni, siz biron-bir fayl yoki papkaga kirsangiz, mod_rewrite hech narsa o'zgartirmaydi. Lekin, masalan, http://yourdomain.com/this/is/a/test ga kirsangiz, siz (ichki sifatida, brauzer url bar o'zgarmagan) http: //yourdomain.com/index.php/this/is/a/test .
qo'shib qo'ydi muallif mAu, manba

1 javoblar

Oddiy uriyni avtomatik ravishda aniqlab olishingiz va uni olib tashlashingiz mumkin, bu sizni sinov/sinov qismiga qoldirishi mumkin.

if(!empty($_SERVER['PATH_INFO']))
{
   //Uri info does not contain docroot or index
    $uri = $_SERVER['PATH_INFO'];
}
else
{
    if(!empty($_SERVER['REQUEST_URI']) && !empty($_SERVER['HTTP_HOST']))
    {
       $fullUrl = 'http://'
                  . ((isset($_SERVER['HTTP_HOST'])) ? $_SERVER['HTTP_HOST'] : '')
                  . ((isset($_SERVER['REQUEST_URI'])) ? $_SERVER['REQUEST_URI'] : '');

       $uri = parse_url($fullUrl, PHP_URL_PATH);
    }
    else if(!empty($_SERVER['PHP_SELF']))
    {
       $uri = $_SERVER['PHP_SELF'];
    }
}

$baseUri = substr($_SERVER['SCRIPT_NAME'], 0, strrpos($_SERVER['SCRIPT_NAME'], "/")+1);
$uri = str_replace($baseUri, '', $uri);

Edit: mAu's comment above is correct. I was under the assumption you was already using mod rewrite.

4
qo'shib qo'ydi
Agar (agar bu savolda bir imkoniyat sifatida keltirilsa) index.php so'rovining URI qismi emasmi?
qo'shib qo'ydi muallif hakre, manba
Yangilangan kod. Yuqoridagi narsa men uchun yaxshi ishlaydi. Skript nomi, mutlaq urlda paydo bo'ladimi-yo'qligidan qat'i nazar, joriy bo'lib qoladi.
qo'shib qo'ydi muallif Daveo, manba
@Daveo bo'lsa-da, javob yaxshi, iltimos savolga javob berishga harakat qila olasizmi stackoverflow.com/questions/12711371
qo'shib qo'ydi muallif harry, manba
PhP |BotsUz
PhP |BotsUz
93 ishtirokchilar

Phpni o'rganishni Hohlasangiz https://t.me/joinchat/AAAAAE-KRc5dd5tPMmGmWA A'zo bo'lin