Cho đến nay tôi đã làm điều này:Thành viên thân thiện URL - mod rewrite và php chuyển hướng
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?load=$1 [QSA,L]
Sau đó, trên trang chỉ mục của tôi (trong thư mục gốc) Tôi đang sử dụng PHP để xác định trang để tải:
// Swap to variables
$load = $_GET['load'];
// Home page
if (!$load || $load == "") { include('home.php'); exit(); }
// Dashboard
if ($load == "dashboard") { include('dashboard.php'); exit(); }
// About
if ($load == "about") { include('about.php'); exit(); }
// Username
$data_array = array(':username' => $load);
$select_account = $connect->prepare("SELECT * FROM `users` WHERE `username` = :username");
$select_account-> execute($data_array);
$account_amount = $select_account->rowCount();
if ($account_amount > 0) { include('profile.php?name=$load'); exit(); }
// Redirect to 404 if there are no results
include('404.php'); exit();
Tất cả mọi thứ cho đến nay đang làm việc nhưng người dùng có thể tải ảnh lên một thư viện và tôi muốn họ được xem như vậy:
www.mysite.com/[username]/gallery/
nhưng nếu bạn đã gõ đó là url viết lại đọc [username]/gallery/
là một phần có nghĩa là $load = [username]/gallery
mà sẽ cho tôi một '404'.
Có thể có giải pháp tốt hơn để nhận được kết quả mong muốn nhưng tôi không quá tốt với .htaccess và viết lại. Tôi muốn thêm rằng tôi muốn viết lại này quá kể từ khi tôi có thư mục con gọi là signup
và signin
mà cả hai đều có thư mục con trong đó quá, nhưng nếu tôi đi đến URL:
www.mysite.com/signup
www.mysite.com/signin
Nó lờ đi viết lại và đi đến thư mục thay vì chạy nó thông qua các tuyên bố $load
đó là những gì tôi muốn. Ngoài ra, để lưu ý, khi đăng ký tài khoản, bất kỳ tên người dùng nào khớp với các chuỗi như dashboard
hoặc about
v.v. nó không cho phép họ sử dụng, điều này sẽ dừng tên người dùng và các câu lệnh if2 else và lên vv
EDIT
một điều tôi quên lưu ý là kể từ khi họ có thể gọi bộ sưu tập bất cứ điều gì họ thích, nó cần phải thực hiện tìm kiếm để xem nếu bộ sưu tập mà tồn tại, vì vậy ví dụ:
www.mysite.com/username/my+first+album
Trước tiên, cần phải kiểm tra tên người dùng tồn tại, sau đó kiểm tra album tồn tại, sau đó hiển thị nó nếu có hoặc 404/chuyển hướng đến bất cứ nơi nào nếu không. Về cơ bản, cả hai tham số/truy vấn sẽ là động. Không chỉ có vậy nhưng sau đó hình ảnh cá nhân trong album mà cần phải làm việc như nhau, ví dụ:
www.mysite.com/username/my+first+album/my+picture
Tôi hy vọng rằng có ý nghĩa ...
Tôi đã tìm hiểu một chút về định tuyến URL này, chưa bao giờ nghe nói về nó trước đây, nhưng tôi đã nghĩ ra cách sử dụng bit của nó cũng như một số ý tưởng từ câu trả lời cả bạn và sally . Tôi chuẩn bị viết nó trong một câu trả lời để cho thấy tôi đã hoạt động như thế nào. 1 cho sự giúp đỡ của bạn! – Joe