Các tuyến đường php ở đâu?

Khi nói đến phần phụ trợ, các nhà phát triển cuối cùng gặp phải các tuyến đường. Các tuyến có thể được coi là xương sống của phần phụ trợ vì mọi yêu cầu mà máy chủ nhận được đều được chuyển hướng đến bộ điều khiển thông qua danh sách định tuyến ánh xạ các yêu cầu tới bộ điều khiển hoặc hành động

Laravel ẩn nhiều chi tiết triển khai cho chúng tôi và đi kèm với rất nhiều cú pháp để giúp cả nhà phát triển mới và có kinh nghiệm phát triển ứng dụng web của họ

Hãy xem kỹ cách quản lý route trong Laravel

Backend Routing và Cross-Site Scripting trong Laravel

Trên một máy chủ, tồn tại cả các tuyến đường công khai và riêng tư. Các tuyến đường công khai có thể là một nguyên nhân gây lo ngại do khả năng xảy ra kịch bản chéo trang (XSS), một kiểu tấn công tiêm nhiễm có thể khiến bạn và người dùng của bạn dễ bị tấn công bởi các tác nhân độc hại

Vấn đề là người dùng có thể được chuyển hướng từ một tuyến đường không yêu cầu mã thông báo phiên sang một tuyến đường yêu cầu — và họ sẽ vẫn có quyền truy cập mà không cần mã thông báo

Đi sâu vào 'xương sống của phần phụ trợ' trong hướng dẫn này về Laravel Routing 🚀Nhấp để Tweet

Cách đơn giản nhất để giải quyết vấn đề này là thực thi tiêu đề HTTP mới, thêm "liên kết giới thiệu" vào tuyến đường để giảm thiểu tình huống này

Xem cách Kinsta chống lại đối thủ. Đối chiếu

'main' => [
  'path' => '/main',
  'referrer' => 'required,refresh-empty',
  'target' => Controller\DashboardController::class . '::mainAction'
]

Định tuyến cơ bản của Laravel

Trong Laravel, các tuyến đường cho phép người dùng định tuyến yêu cầu thích hợp đến bộ điều khiển mong muốn. Laravel Route cơ bản nhất chấp nhận Mã định danh tài sản thống nhất (đường dẫn tuyến đường của bạn) và một bao đóng có thể là cả hàm hoặc lớp

Trong Laravel, các route được tạo bên trong web. php và api. tập tin php. Laravel đi kèm với hai route theo mặc định. một cho WEB và một cho API

Các tuyến này nằm trong thư mục routes/, nhưng chúng được tải trong Nhà cung cấp/RouteServiceProvider. php

Các tuyến đường php ở đâu?
Trạng thái mặc định của nhà cung cấp dịch vụ route của Laravel

Thay vì làm điều này, chúng ta có thể tải các tuyến đường trực tiếp bên trong RouteServiceProvider. php, bỏ qua hoàn toàn các tuyến/thư mục

Các tuyến đường php ở đâu?
Đang tải các tuyến Laravel trực tiếp trong nhà cung cấp

chuyển hướng

Khi chúng tôi xác định tuyến đường, chúng tôi thường muốn chuyển hướng người dùng truy cập tuyến đường đó và lý do cho điều này rất khác nhau. Có thể là do đó là một tuyến đường không được dùng nữa và chúng tôi đã thay đổi phụ trợ hoặc máy chủ hoặc có thể là do chúng tôi muốn cài đặt xác thực hai yếu tố (2FA), v.v.

Laravel có một cách dễ dàng để làm điều này. Nhờ tính đơn giản của khung, chúng ta có thể sử dụng phương thức chuyển hướng trên mặt tiền Tuyến đường, chấp nhận tuyến đường vào và tuyến đường được chuyển hướng đến

Theo tùy chọn, chúng tôi có thể cung cấp mã trạng thái cho chuyển hướng làm tham số thứ ba. Phương thức

// Illegal to use
Route::redirect("/home", "/office/{status}");
1 sẽ thực hiện tương tự như phương thức
// Illegal to use
Route::redirect("/home", "/office/{status}");
2, ngoại trừ nó sẽ luôn trả về mã trạng thái 301

// Simple redirect
Route::redirect("/class", "/myClass");

// Redirect with custom status
Route::redirect("/home", "/office", 305);

// Route redirect with 301 status code
Route::permanentRedirect("/home", "office");

Bên trong các tuyến đường chuyển hướng, chúng tôi bị cấm sử dụng các từ khóa “destination” và “status” làm tham số vì chúng được đặt trước bởi Laravel

// Illegal to use
Route::redirect("/home", "/office/{status}");

Lượt xem

Lượt xem là. lưỡi. php mà chúng tôi sử dụng để hiển thị giao diện người dùng của ứng dụng Laravel của chúng tôi. Nó sử dụng công cụ tạo khuôn mẫu lưỡi dao và đó là cách mặc định để xây dựng một ứng dụng toàn ngăn xếp chỉ bằng Laravel

Nếu chúng tôi muốn tuyến đường của mình trả về một chế độ xem, chúng tôi chỉ cần sử dụng phương thức chế độ xem trên Mặt tiền tuyến đường. Nó chấp nhận một tham số tuyến đường, tên chế độ xem và một mảng giá trị tùy chọn được chuyển đến chế độ xem

// When the user accesses my-domain.com/homepage
// the homepage.blade.php file will be rendered
Route::view("/homepage", "homepage");

Giả sử chế độ xem của chúng ta muốn nói “Xin chào,

// Illegal to use
Route::redirect("/home", "/office/{status}");
3” bằng cách chuyển một mảng tùy chọn với tham số đó. Chúng ta có thể làm điều đó với đoạn mã sau (nếu thiếu tham số được yêu cầu trong chế độ xem, yêu cầu sẽ thất bại và đưa ra lỗi)

Route::view('/homepage', 'homepage', ['name' => "Kinsta"]);

Danh sách tuyến đường

Khi ứng dụng của bạn tăng kích thước, số lượng yêu cầu cần được định tuyến cũng tăng theo. Và với một lượng lớn thông tin có thể dẫn đến sự nhầm lẫn lớn

Đây là nơi mà

// Illegal to use
Route::redirect("/home", "/office/{status}");
4 có thể giúp chúng ta. Nó cung cấp tổng quan về tất cả các tuyến được xác định trong ứng dụng, phần mềm trung gian và bộ điều khiển của chúng

php artisan route:list

Nó sẽ hiển thị danh sách tất cả các tuyến đường không có phần mềm trung gian. Đối với điều này, chúng ta phải sử dụng cờ

// Illegal to use
Route::redirect("/home", "/office/{status}");
5

php artisan route:list -v

Trong trường hợp bạn có thể đang sử dụng thiết kế hướng tên miền nơi các tuyến đường của bạn có tên cụ thể trong đường dẫn của chúng, bạn có thể tận dụng khả năng lọc của lệnh này như sau

php artisan route:list –path=api/account

Điều này sẽ chỉ hiển thị các tuyến bắt đầu bằng api/account

Mặt khác, chúng ta có thể hướng dẫn Laravel loại trừ hoặc bao gồm các route do bên thứ ba xác định bằng cách sử dụng các tùy chọn

// Illegal to use
Route::redirect("/home", "/office/{status}");
6 hoặc
// Illegal to use
Route::redirect("/home", "/office/{status}");
7

Tham số tuyến đường

Đôi khi, bạn có thể cần nắm bắt các phân đoạn của URI với tuyến đường, chẳng hạn như ID người dùng hoặc mã thông báo. Chúng ta có thể làm điều này bằng cách xác định tham số route, tham số này luôn được đặt trong dấu ngoặc nhọn (

// Illegal to use
Route::redirect("/home", "/office/{status}");
8) và chỉ bao gồm các ký tự chữ cái

Nếu các route của chúng ta có các phụ thuộc bên trong các callback của chúng, bộ chứa dịch vụ của Laravel sẽ tự động đưa chúng vào

use Illuminate\Http\Request;
use Controllers/DashboardController;
Route::post('/dashboard/{id}, function (Request $request, string $id) {
  return 'User:' . $id;
}
Route::get('/dashboard/{id}, DashboardController.php);

Thông số bắt buộc

Các tham số bắt buộc của Laravel là các tham số trong route mà chúng ta không được phép bỏ qua khi thực hiện cuộc gọi. Nếu không, một lỗi sẽ được ném

Route::post("/gdpr/{userId}", GetGdprDataController.php");

Bây giờ bên trong GetGdprDataController. php, chúng ta sẽ có quyền truy cập trực tiếp vào tham số $userId

Triển khai ứng dụng của bạn lên Kinsta - Bắt đầu với Khoản tín dụng $20 ngay bây giờ

Chạy nút của bạn. js, Python, Go, PHP, Ruby, Java và Scala, (hoặc hầu hết mọi ứng dụng khác nếu bạn sử dụng Dockerfiles tùy chỉnh của riêng mình), trong ba bước đơn giản

Triển khai ngay bây giờ và nhận $20 giảm giá

// Simple redirect
Route::redirect("/class", "/myClass");

// Redirect with custom status
Route::redirect("/home", "/office", 305);

// Route redirect with 301 status code
Route::permanentRedirect("/home", "office");
0

Một tuyến đường có thể nhận bất kỳ số lượng tham số nào. Chúng được đưa vào trong các cuộc gọi lại/bộ điều khiển tuyến đường dựa trên thứ tự mà chúng được liệt kê

// Simple redirect
Route::redirect("/class", "/myClass");

// Redirect with custom status
Route::redirect("/home", "/office", 305);

// Route redirect with 301 status code
Route::permanentRedirect("/home", "office");
1

Thông số tùy chọn

Trong trường hợp chúng tôi muốn làm điều gì đó trên một tuyến đường khi chỉ có một tham số và không có gì khác, tất cả đều không ảnh hưởng đến toàn bộ ứng dụng, chúng tôi có thể thêm một tham số tùy chọn. Các tham số tùy chọn này được biểu thị bằng dấu

// Illegal to use
Route::redirect("/home", "/office/{status}");
9 được thêm vào chúng

// Simple redirect
Route::redirect("/class", "/myClass");

// Redirect with custom status
Route::redirect("/home", "/office", 305);

// Route redirect with 301 status code
Route::permanentRedirect("/home", "office");
2

Ký tự đại diện tuyến đường

Laravel cung cấp một cách để chúng tôi lọc các tham số tùy chọn hoặc bắt buộc của chúng tôi sẽ trông như thế nào

Giả sử chúng tôi muốn một chuỗi ID người dùng. Chúng tôi có thể xác thực nó như vậy ở cấp độ tuyến đường bằng cách sử dụng phương pháp

// When the user accesses my-domain.com/homepage
// the homepage.blade.php file will be rendered
Route::view("/homepage", "homepage");
0

Phương thức

// When the user accesses my-domain.com/homepage
// the homepage.blade.php file will be rendered
Route::view("/homepage", "homepage");
0 chấp nhận tên của tham số và quy tắc regex sẽ được áp dụng khi xác thực. Theo mặc định, nó nhận tham số đầu tiên, nhưng nếu có nhiều tham số, chúng ta có thể truyền một mảng với tên của tham số là khóa và quy tắc là giá trị, và Laravel sẽ phân tích tất cả chúng cho chúng ta

// Simple redirect
Route::redirect("/class", "/myClass");

// Redirect with custom status
Route::redirect("/home", "/office", 305);

// Route redirect with 301 status code
Route::permanentRedirect("/home", "office");
3

Chúng tôi có thể tiến thêm một bước nữa và áp dụng xác thực trên tất cả các tuyến đường trong ứng dụng của mình bằng cách sử dụng phương pháp

// When the user accesses my-domain.com/homepage
// the homepage.blade.php file will be rendered
Route::view("/homepage", "homepage");
2 trên mặt tiền
// When the user accesses my-domain.com/homepage
// the homepage.blade.php file will be rendered
Route::view("/homepage", "homepage");
3

// Simple redirect
Route::redirect("/class", "/myClass");

// Redirect with custom status
Route::redirect("/home", "/office", 305);

// Route redirect with 301 status code
Route::permanentRedirect("/home", "office");
4

Điều này sẽ xác thực mọi tham số

// When the user accesses my-domain.com/homepage
// the homepage.blade.php file will be rendered
Route::view("/homepage", "homepage");
4 với biểu thức chính quy này. Và khi chúng tôi xác định nó, nó sẽ tự động được áp dụng cho tất cả các tuyến sử dụng tên tham số đó

Như chúng ta có thể thấy, Laravel đang sử dụng ký tự

// When the user accesses my-domain.com/homepage
// the homepage.blade.php file will be rendered
Route::view("/homepage", "homepage");
5 làm dấu phân cách trong đường dẫn. Nếu chúng tôi muốn sử dụng nó trong đường dẫn, chúng tôi phải cho phép rõ ràng nó là một phần của trình giữ chỗ của chúng tôi bằng cách sử dụng biểu thức chính quy
// When the user accesses my-domain.com/homepage
// the homepage.blade.php file will be rendered
Route::view("/homepage", "homepage");
0

// Simple redirect
Route::redirect("/class", "/myClass");

// Redirect with custom status
Route::redirect("/home", "/office", 305);

// Route redirect with 301 status code
Route::permanentRedirect("/home", "office");
5

Nhược điểm duy nhất là nó sẽ chỉ được hỗ trợ trong đoạn đường cuối cùng

Đấu tranh với thời gian chết và các vấn đề về WordPress? . Kiểm tra các tính năng của chúng tôi

Tuyến đường được đặt tên

Như tên gợi ý, chúng tôi có thể đặt tên cho các tuyến đường, giúp thuận tiện cho việc tạo URL hoặc chuyển hướng cho các tuyến đường cụ thể

Cách tạo các tuyến đường được đặt tên

Một cách đơn giản để tạo một tuyến đường được đặt tên được cung cấp bởi phương thức

// When the user accesses my-domain.com/homepage
// the homepage.blade.php file will be rendered
Route::view("/homepage", "homepage");
7 được xâu chuỗi trên mặt tiền
// When the user accesses my-domain.com/homepage
// the homepage.blade.php file will be rendered
Route::view("/homepage", "homepage");
3. Tên của mỗi tuyến đường phải là duy nhất

// Simple redirect
Route::redirect("/class", "/myClass");

// Redirect with custom status
Route::redirect("/home", "/office", 305);

// Route redirect with 301 status code
Route::permanentRedirect("/home", "office");
6

Nhóm tuyến đường

Các nhóm tuyến đường cho phép bạn chia sẻ các thuộc tính tuyến đường như phần mềm trung gian trên một số lượng lớn tuyến đường mà không cần xác định lại nó trên mỗi tuyến đường

Phần mềm trung gian

Chỉ định một phần mềm trung gian cho tất cả các tuyến mà chúng tôi có cho phép chúng tôi kết hợp chúng trong một nhóm, trước tiên bằng cách sử dụng phương pháp

// When the user accesses my-domain.com/homepage
// the homepage.blade.php file will be rendered
Route::view("/homepage", "homepage");
9. Một điều cần xem xét là các phần mềm trung gian được thực thi theo thứ tự mà chúng được áp dụng cho nhóm

// Simple redirect
Route::redirect("/class", "/myClass");

// Redirect with custom status
Route::redirect("/home", "/office", 305);

// Route redirect with 301 status code
Route::permanentRedirect("/home", "office");
7

Bộ điều khiển

Khi một nhóm sử dụng cùng một bộ điều khiển, chúng ta có thể sử dụng phương thức

Route::view('/homepage', 'homepage', ['name' => "Kinsta"]);
0 để xác định bộ điều khiển chung cho tất cả các tuyến trong nhóm đó. Bây giờ chúng ta phải chỉ định phương thức mà tuyến đường sẽ gọi

// Simple redirect
Route::redirect("/class", "/myClass");

// Redirect with custom status
Route::redirect("/home", "/office", 305);

// Route redirect with 301 status code
Route::permanentRedirect("/home", "office");
8

Định tuyến tên miền phụ

Tên miền phụ là một phần thông tin bổ sung được thêm vào đầu tên miền của trang web. Điều này cho phép các trang web phân tách và sắp xếp nội dung của chúng cho các chức năng cụ thể, chẳng hạn như cửa hàng trực tuyến, blog, bản trình bày, v.v. với phần còn lại của trang web

Các tuyến đường của chúng tôi có thể được sử dụng để xử lý định tuyến tên miền phụ. Chúng tôi có thể bắt tên miền và một phần của tên miền phụ để sử dụng trong bộ điều khiển và định tuyến của chúng tôi. Với sự trợ giúp của phương thức

Route::view('/homepage', 'homepage', ['name' => "Kinsta"]);
1 trên mặt tiền
// When the user accesses my-domain.com/homepage
// the homepage.blade.php file will be rendered
Route::view("/homepage", "homepage");
3, chúng ta có thể nhóm các tuyến đường của mình dưới một miền duy nhất

// Simple redirect
Route::redirect("/class", "/myClass");

// Redirect with custom status
Route::redirect("/home", "/office", 305);

// Route redirect with 301 status code
Route::permanentRedirect("/home", "office");
9

Tiền tố và tiền tố tên

Bất cứ khi nào chúng ta có một nhóm các route, thay vì sửa đổi từng cái một, chúng ta có thể sử dụng các tiện ích bổ sung mà Laravel cung cấp, chẳng hạn như

Route::view('/homepage', 'homepage', ['name' => "Kinsta"]);
3 và
// When the user accesses my-domain.com/homepage
// the homepage.blade.php file will be rendered
Route::view("/homepage", "homepage");
7 trên mặt tiền
// When the user accesses my-domain.com/homepage
// the homepage.blade.php file will be rendered
Route::view("/homepage", "homepage");
3

Phương thức

Route::view('/homepage', 'homepage', ['name' => "Kinsta"]);
3 có thể được sử dụng để thêm tiền tố cho mỗi tuyến đường trong nhóm bằng một URI nhất định và phương thức
// When the user accesses my-domain.com/homepage
// the homepage.blade.php file will be rendered
Route::view("/homepage", "homepage");
7 có thể được sử dụng để thêm tiền tố cho mỗi tên tuyến đường bằng một chuỗi đã cho

Điều này cho phép chúng tôi tạo những thứ mới như các tuyến quản trị mà không bắt buộc phải sửa đổi từng tên hoặc tiền tố để xác định chúng

// Illegal to use
Route::redirect("/home", "/office/{status}");
0

Giờ đây, các URI cho các tuyến đường này sẽ là

Route::view('/homepage', 'homepage', ['name' => "Kinsta"]);
8,
Route::view('/homepage', 'homepage', ['name' => "Kinsta"]);
9,
php artisan route:list
0 và các tên
php artisan route:list
1,
php artisan route:list
2 và
php artisan route:list
3

Bộ nhớ đệm định tuyến

Khi triển khai ứng dụng lên các máy chủ sản xuất, một nhà phát triển Laravel giỏi sẽ tận dụng được route cache của Laravel

Bộ nhớ đệm định tuyến là gì?

Bộ nhớ đệm định tuyến giảm lượng thời gian cần thiết để đăng ký tất cả các tuyến ứng dụng

Đang chạy

php artisan route:list
4, một phiên bản của
php artisan route:list
5 được tạo và sau khi được mã hóa, đầu ra tuần tự hóa được ghi vào
php artisan route:list
6

Bây giờ bất kỳ yêu cầu nào khác sẽ tải tệp bộ đệm này nếu nó tồn tại. Do đó, ứng dụng của chúng ta không còn phải phân tích cú pháp và chuyển đổi các mục từ tệp tuyến đường thành các đối tượng

php artisan route:list
7 trong
php artisan route:list
5

Tại sao sử dụng bộ nhớ đệm định tuyến lại quan trọng

Bằng cách không sử dụng tính năng route caching mà Laravel cung cấp, ứng dụng của bạn có nguy cơ chạy chậm hơn mức có thể, điều này có thể làm giảm doanh thu, tỷ lệ giữ chân người dùng và niềm tin vào thương hiệu của bạn

Tùy thuộc vào quy mô dự án của bạn và có bao nhiêu tuyến đường, việc chạy một lệnh lưu vào bộ nhớ đệm tuyến đường đơn giản có thể tăng tốc ứng dụng của bạn ở bất kỳ đâu từ 130% đến 500% — một mức tăng lớn mà gần như không cần nỗ lực

Tóm lược

Định tuyến là xương sống của phát triển phụ trợ. Laravel framework vượt trội về điều này bằng cách cung cấp một cách chi tiết để xác định và quản lý các route. Làm quen với định tuyến Laravel trong hướng dẫn kỹ lưỡng này 🛠Nhấp để Tweet

Sự phát triển thực sự có thể truy cập được cho tất cả mọi người và giúp tăng tốc ứng dụng chỉ nhờ vào việc nó được xây dựng trong Laravel

Bạn đã gặp những thủ thuật và mẹo nào khác liên quan đến Laravel route?


Nhận tất cả các ứng dụng, cơ sở dữ liệu và trang web WordPress của bạn trực tuyến và dưới một mái nhà. Nền tảng đám mây hiệu suất cao, đầy đủ tính năng của chúng tôi bao gồm

  • Dễ dàng thiết lập và quản lý trong bảng điều khiển MyKinsta
  • Hỗ trợ chuyên gia 24/7
  • Mạng và phần cứng Google Cloud Platform tốt nhất, được cung cấp bởi Kubernetes để có khả năng mở rộng tối đa
  • Tích hợp Cloudflare cấp doanh nghiệp cho tốc độ và bảo mật
  • Tiếp cận đối tượng toàn cầu với tối đa 35 trung tâm dữ liệu và hơn 275 PoP trên toàn thế giới

Hãy tự kiểm tra với $20 trong tháng đầu tiên của Lưu trữ ứng dụng hoặc Lưu trữ cơ sở dữ liệu. Khám phá kế hoạch của chúng tôi hoặc nói chuyện với bộ phận bán hàng để tìm thấy sự phù hợp nhất của bạn

Định tuyến hoạt động như thế nào trong php?

Định tuyến là điều xảy ra khi ứng dụng xác định bộ điều khiển và hành động nào được thực thi dựa trên URL được yêu cầu . Nói một cách đơn giản, đó là cách khung nhận được từ http. // localhost/người dùng/danh sách. html vào bộ điều khiển Người dùng và hành động list().

Đâu là đăng ký route trong Laravel?

Các tuyến này được tìm thấy trong thư mục nhà cung cấp Illuminate\Routing\Router . Tuy nhiên, đừng ghi đè lên bất kỳ thứ gì trong thư mục nhà cung cấp, nếu không khi bạn cập nhật, chúng sẽ bị xóa. Để ghi đè các tuyến đường này, chỉ cần khai báo chúng trong các tuyến đường của bạn.

Làm cách nào để tạo định tuyến trong php?

Chuyển hướng tất cả các yêu cầu HTTP tới bộ định tuyến . Chúng tôi giới hạn quyền truy cập vào các tệp vật lý bằng chỉ thị Apache RewriteCond. Sau đó, chúng tôi chuyển hướng tất cả các yêu cầu sắp tới tới chỉ mục. tập tin php.

Làm cách nào tôi có thể biết lộ trình của mình trong Laravel?

Bạn có thể sử dụng các phương thức current, currentRouteName và currentRouteAction trên mặt tiền Tuyến đường để truy cập thông tin về tuyến đường xử lý yêu cầu đến. $route = Tuyến đường. hiện hành(); . currentRouteName(); . currentRouteAction();