php - Pelaksanaan penghalaan
仅有的幸福
仅有的幸福 2017-06-26 10:49:00
0
3
918

Apabila menggunakan perisian tapak web, saya mendapati bahawa index.php dalam direktori akar sesetengah perisian boleh menjana berbilang halaman web yang berbeza, seperti:

localhost/index.php/blog;

Bagaimana kaedah penghalaan ini dilaksanakan? Terima kasih!

仅有的幸福
仅有的幸福

membalas semua(3)
黄舟

Untuk localhost/index.php,访问的文件地址是 localhost/index.php 没错,然后 /blog, ia boleh difahami sebagai parameter,

Bagaimana untuk mendapatkannya? Semak maklumat $_SERVER.

Sebagai contoh, parameter '/blog' sepadan dengan kaedah indeks pengawal Blog, dan kemudian logik yang sepadan boleh dilaksanakan dengan memanggil (Blog baru())->index().

Seterusnya, parameter '/blog/add' sepadan dengan kaedah tambah pengawal Blog, dan kemudian logik yang sepadan boleh dilaksanakan dengan memanggil (Blog baharu())->index().

淡淡烟草味

Untuk pelayan, www.xxx.com/index.php/test hanya boleh mengenali www.xxx.com/index.php Ini dikonfigurasikan dalam Nginx atau Apche, seperti konfigurasi berikut:

location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

        fastcgi_intercept_errors off;
        fastcgi_buffer_size 16k;
        fastcgi_buffers 4 16k;
        fastcgi_connect_timeout 300;
        fastcgi_send_timeout 300;
        fastcgi_read_timeout 300;
    }

Bagi ujian maklumat seterusnya, ia diiktiraf oleh kod PHP itu sendiri. Ia sebenarnya merupakan parameter (Bagi cara kod PHP menerima parameter ini, anda perlu melihat bagaimana Nginx atau Apache berinteraksi dengan PHP.) Apabila ini Selepas. mendapatkan parameter "ujian", anda boleh melakukan apa yang anda mahu berdasarkan parameter ini, anda boleh melakukan perkara yang berbeza dan menyediakan pelbagai fungsi. Ini juga pemahaman saya tentang penghalaan.

滿天的星座

Format parameter berikut dipanggil PATH_INFO, gesaan apache secara lalai, nginx perlu memadankannya dengan sendirinya.

Ini sama dengan index.php?url=/path/to/xxx Ia hanya menggunakan parameter untuk mewakili laluan projek.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan