Mencantikkan URL dalam rangka kerja PHP
P粉176980522
P粉176980522 2023-10-30 09:40:09
0
1
685

Saya tahu anda boleh menambah peraturan dalam htaccess, tetapi saya mendapati bahawa rangka kerja PHP tidak melakukannya dan entah bagaimana anda masih mempunyai URL yang cantik. Bagaimanakah pelayan boleh melakukan ini jika mereka tidak mengetahui peraturan URL?

Saya telah mencari kelas pengurus url Yii, tetapi saya tidak faham bagaimana ia dilakukan.

P粉176980522
P粉176980522

membalas semua(1)
P粉801904089

Ini biasanya dilakukan dengan menghalakan semua permintaan ke satu titik masuk (fail yang melaksanakan kod berbeza bergantung pada permintaan), dengan peraturan berikut:

# Redirect everything that doesn't match a directory or file to index.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* index.php [L]

Fail kemudian membandingkan permintaan ($_SERVER["REQUEST_URI"]) dengan senarai laluan - corak yang sepadan dengan permintaan, memetakan laluan pelaksanaan kepada tindakan pengawal (dalam aplikasi MVC) atau tindakan lain. Rangka kerja selalunya termasuk laluan yang boleh membuat kesimpulan pengawal dan tindakan daripada permintaan itu sendiri, sebagai laluan sandaran.

Contoh mudah:

<?php

// Define a couple of simple actions
class Home {
    public function GET() { return 'Homepage'; }
}

class About {
    public function GET() { return 'About page'; }
}

// Mapping of request pattern (URL) to action classes (above)
$routes = array(
    '/' => 'Home',
    '/about' => 'About'
);

// Match the request to a route (find the first matching URL in routes)
$request = '/' . trim($_SERVER['REQUEST_URI'], '/');
$route = null;
foreach ($routes as $pattern => $class) {
    if ($pattern == $request) {
        $route = $class;
        break;
    }
}

// If no route matched, or class for route not found (404)
if (is_null($route) || !class_exists($route)) {
    header('HTTP/1.1 404 Not Found');
    echo 'Page not found';
    exit(1);
}

// If method not found in action class, send a 405 (e.g. Home::POST())
if (!method_exists($route, $_SERVER["REQUEST_METHOD"])) {
    header('HTTP/1.1 405 Method not allowed');
    echo 'Method not allowed';
    exit(1);
}

// Otherwise, return the result of the action
$action = new $route;
$result = call_user_func(array($action, $_SERVER["REQUEST_METHOD"]));
echo $result;

Digabungkan dengan konfigurasi pertama, ini adalah skrip mudah yang membolehkan anda menggunakan URL seperti domain.com/about. Harap ini membantu anda memahami perkara yang berlaku di sini.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!