2015-04-30 22 views
5

Sau nhiều giờ rối tung với .htaccess Tôi đã đến để kết thúc gửi bất kỳ yêu cầu đến một kịch bản PHP duy nhất mà sẽ xử lý:Chuyển bất kỳ yêu cầu GET đến một kịch bản php đơn

  • Thế hệ của html (bất cứ điều gì cách thức, bao gồm hoặc động)
  • 301 Chuyển hướng với tính linh hoạt hơn trong logic (cho một .htaccess-eer)
  • 404 lỗi cuối cùng nếu yêu cầu không có ý nghĩa.

để trong .htaccess chức năng tối thiểu.

Sau một số thử nghiệm, có vẻ như điều này khá khả thi và từ quan điểm của tôi thích hợp hơn. Vì vậy, nhiều mà tôi tự hỏi có gì sai hoặc có thể đi sai với phương pháp này?

  • Hiệu suất máy chủ?
  • Về SEO Tôi không thấy bất kỳ vấn đề nào vì quy trình sẽ "trong suốt" đối với các bot.

redirector.php sẽ mong đợi chuỗi truy vấn bao gồm yêu cầu thực tế. Mã .htaccess sẽ gửi mọi thứ ở đó là gì?

Trả lời

1

Tôi đặt trước để di chuyển tất cả các tệp php của bạn trong một thư mục khác và chỉ đặt 1 tệp php trong đường dẫn htdocs của bạn, xử lý tất cả các yêu cầu. các file khác, mà bạn muốn vượt qua mà không php, bạn có thể đặt trong thư mục đó quá với htaccess này:

RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ /index.php/$0 [L] 

tập tin hiện tại (JPG, JS hay bất cứ những) vẫn có thể truy cập mà không cần PHP. Đó là cách linh hoạt nhất để nhận ra nó.

Ví dụ:

- /scripts/ # Your PHP Files 
- /htdocs/index.php # HTTP reachable Path 
- /htdocs/images/test.jpg # reachable without PHP 
- /private_files/images/test.jpg # only reachable over a PHP script 
1

Bạn có thể sử dụng mã này để chuyển hướng tất cả các yêu cầu tới một file:

RewriteEngine on 
RewriteRule ^.*?(\?.*)?$ myfile.php$1 

Lưu ý rằng tất cả các yêu cầu (bao gồm stylesheets, hình ảnh, ...) sẽ được chuyển hướng là tốt. Tất nhiên có những khả năng khác (quy tắc), nhưng đây là một trong những điều tôi đang sử dụng và nó sẽ giữ cho chuỗi truy vấn chính xác. Nếu bạn không cần nó, bạn có thể sử dụng

RewriteEngine on 
RewriteRule ^.*?$ myfile.php 

Đây là kỹ thuật phổ biến như bot và thậm chí là người dùng chỉ xem URL được yêu cầu của họ chứ không phải cách xử lý nội bộ. Hiệu suất máy chủ không phải là vấn đề gì cả.

Vì bạn chuyển hướng tất cả URL tới một tệp php không còn trang 404 nữa vì nó được lưu trong tệp .php của bạn. Vì vậy, hãy đảm bảo bạn xử lý đúng URL không hợp lệ.

Các vấn đề liên quan