Hướng dẫn how to hide index php from url - cách ẩn chỉ mục php khỏi url

Câu trả lời ban đầu thực sự là chính xác, nhưng thiếu giải thích. Tôi muốn thêm một số giải thích và sửa đổi.

Tôi khuyên bạn nên đọc phần giới thiệu ngắn này https://httpd.apache.org/docs/2.4/rewrite/intro.html (15 phút) và tham khảo 2 trang này trong khi đọc.

https://httpd.apache.org/docs/2.4/mod/mod_rewrite.html https://httpd.apache.org/docs/2.4/rewrite/flags.html


Đây là quy tắc cơ bản để ẩn index.php khỏi URL. Đặt cái này vào tệp root .htaccess của bạn.

mod_rewrite phải được bật bằng PHP và điều này sẽ hoạt động cho phiên bản PHP cao hơn 5.2.6.

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) /index.php/$1 [L]

Hãy nghĩ %{REQUEST_FILENAME} là con đường sau máy chủ.

Ví dụ.

$ sudo vi /var/www/html/.htaccess
0, %{REQUEST_FILENAME}
$ sudo vi /var/www/html/.htaccess
2

Vì vậy, 3 dòng cuối cùng có nghĩa là, nếu đó không phải là một tệp thông thường

$ sudo vi /var/www/html/.htaccess
3 chứ không phải thư mục
$ sudo vi /var/www/html/.htaccess
4, thì hãy thực hiện
$ sudo vi /var/www/html/.htaccess
5.

Đối với các định dạng viết lại:

Hướng dẫn how to hide index php from url - cách ẩn chỉ mục php khỏi url

Vì vậy,

$ sudo vi /var/www/html/.htaccess
6 có nghĩa là, nếu 2
$ sudo vi /var/www/html/.htaccess
7 được thỏa mãn, nó sẽ phù hợp với mọi thứ sau tên máy chủ.
$ sudo vi /var/www/html/.htaccess
9 khớp với bất kỳ ký tự đơn nào,
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
0 khớp với bất kỳ ký tự nào và
$ sudo vi /var/www/html/.htaccess
8 làm cho điều này trở thành một biến có thể là tài liệu tham khảo bằng
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
2, sau đó thay thế bằng
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
3. Hiệu ứng cuối cùng là thêm một index.php trước vào toàn bộ đường dẫn URL.characters and
$ sudo vi /var/www/html/.htaccess
8 makes this a variables can be references with
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
2, then replace with
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
3. The final effect is to add a preceding index.php to the whole URL path.

Ví dụ. Đối với

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
5, nó sẽ sản xuất,
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
6 trong nội bộ.internally.

Một vấn đề quan trọng khác là điều này thực sự giải quyết câu hỏi. Trong nội bộ, (tôi đoán) nó luôn cần

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
6, nhưng với việc viết lại, bạn có thể truy cập trang web mà không cần index.php, Apache nói thêm điều đó cho bạn trong nội bộ.Internally, (I guess) it always need
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
6, but with rewriting, you could visit the site without index.php, apache adds that for you internally.


BTW, tạo thêm một tệp .htaccess không được Apache Doc khuyến nghị lắm.

Viết lại thường được cấu hình trong cài đặt cấu hình máy chủ chính (bên ngoài bất kỳ phần

$ sudo systemctl restart httpd
0 nào) hoặc bên trong các container
$ sudo systemctl restart httpd
1. Đây là cách dễ nhất để viết lại và được khuyến nghị

Theo mặc định, các nền tảng PHP như WordPress và Codeigniter expend index.php ở cuối URL trang web, không thực sự cần thiết. Dưới đây là các bước để xóa index.php khỏi url bằng cách sử dụng .htaccess trong máy chủ web Apache. Bạn có thể sử dụng các bước này để xóa index.php khỏi WordPress, Codeigniter và các trang web PHP khác.

Về cơ bản, chúng tôi sẽ chuyển hướng Index.php sang URL mà không có nó. Vì vậy, chúng tôi sẽ cần mô -đun Apache mod_rewrite.

Trước khi tiếp tục tiếp tục, vui lòng đảm bảo rằng bạn đã kích hoạt mod_rewrite trong Apache Web Server. Dưới đây là các bước để kích hoạt mod_rewrite trong Apache. Vào cuối của nó, bạn sẽ tạo một tệp .htaccess cho trang web của bạn.

1. Mở tệp .htaccess

Mở thiết bị đầu cuối và chạy các lệnh sau để mở tệp .htaccess. Chúng tôi đã sử dụng đường dẫn tệp mặc định của tệp .htaccess. Bạn có thể thay đổi nó theo yêu cầu của bạn.

$ sudo vi /var/www/html/.htaccess

2. Xóa index.php khỏi url

Thêm các dòng sau trong tệp .htaccess.

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

Chúng ta hãy nhìn vào từng dòng ở trên. Dòng đầu tiên cho phép mod_rewrite nếu nó chưa được bật.

Dòng thứ hai phù hợp với các URL không phải là tệp. Dòng thứ ba phù hợp với các URL không phải là thư mục. Vì vậy, chúng tôi đang tìm cách phù hợp với các URL không phải là tệp cũng không phải thư mục.

Dòng cuối cùng có nghĩa là nếu hai câu lệnh viết lại trước khi nó được khớp với URL, thì nó sẽ được chuyển hướng đến URL mà không cần index.php trong đó.

3. Khởi động lại máy chủ web Apache

Khởi động lại máy chủ Apache để áp dụng các thay đổi

$ sudo systemctl restart httpd

Bây giờ nếu bạn mở trình duyệt và truy cập http: //your_domain_or_ip/index.php, bạn sẽ được chuyển hướng đến http: // your_domain_or_ip. Thay thế your_domain_or_ip bằng tên miền hoặc địa chỉ IP của bạn. Tương tự, nếu bạn truy cập URL như http: //your_domain_or_ip/index.php/Folder1/Folder2 Bạn sẽ được chuyển hướng đến http: // your_domain_or_ip/firder1/firder2

Bài viết liên quan:

  • về tác giả

Hướng dẫn how to hide index php from url - cách ẩn chỉ mục php khỏi url

Để loại bỏ các chỉ mục trên mạng.

Nếu bạn đang chạy Apache, bạn có thể làm điều đó bằng cách tạo một chuyển hướng trong tệp .htaccess trang web của bạn. Nếu bạn không có một tệp, hãy tạo một tệp mới có tên là .htaccess, trong trang web của bạn.

Lưu cái này bên trong tệp .htaccess của bạn:


  RewriteEngine On

  # Send would-be 404 requests to Craft
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_URI} !^/(favicon\.ico|apple-touch-icon.*\.png)$ [NC]
  RewriteRule (.+) index.php?p=$1 [QSA,L]

Điều đó viết lại quy tắc về cơ bản nói, nếu một yêu cầu được đưa ra trong bản đồ đó không phải là một thư mục hoặc tệp hiện có, hãy chuyển nó sang index.php thay thế.

Với tệp đó, hãy thử truy cập một trang trên trang web của bạn (bên cạnh trang chủ của bạn), mà không cần chỉ mục. Nếu nó hoạt động, tuyệt vời! Nếu không, bạn nên kiểm tra với máy chủ của mình để xem lý do tại sao tệp .htaccess không hoạt động.

Điều đó thật tuyệt, nhưng các URL của tôi vẫn đang xuất hiện với Index index.php, # #

Bước cuối cùng là nói với Craft rằng trang web của bạn được thiết lập để xử lý các URL mà không cần chỉ số. .

Bạn có thể nói với Craft không bao gồm các chỉ mục của nhóm.

    'omitScriptNameInUrls' => true,

Với điều đó, Craft sẽ nhận lời của bạn và ngừng thực hiện kiểm tra hàng ngày.

Nhưng nghiêm túc mà nói, các URL của tôi vẫn có chỉ số.

Nếu bạn trên Apache, tệp

$ sudo systemctl restart httpd
2 của bạn có thể không được đặt cho trang web của bạn, việc vô hiệu hóa hiệu quả tất cả các thay đổi tệp .htaccess. Thay đổi nó thành
$ sudo systemctl restart httpd
4, khởi động lại Apache và cuối cùng bạn sẽ được đặt. Ngoài ra, hãy đảm bảo MOD_REWRITE được bật.

Làm cách nào để loại bỏ chỉ số PHP?

Cách xóa chỉ mục ...
Tạo tệp .htaccess ..
Xóa tệp index.php ..
Bật chế độ Apache viết lại ..
Khởi động lại Apache ..

Làm cách nào để loại bỏ PHP khỏi URL?

Cách loại bỏ ...
Mở tệp HTACCESS.Mở thiết bị đầu cuối và chạy lệnh sau để mở.HTACCESS FILE.....
Loại bỏ .Phần mở rộng PHP từ URL.....
Khởi động lại máy chủ web Apache.Khởi động lại máy chủ Apache với lệnh sau $ sudo systemctl khởi động lại httpd ..

Tại sao URL của tôi nói chỉ số PHP?

Lý do phổ biến nhất cho chỉ số.PHP xuất hiện là cấu trúc permalink không đúng.Do đó, trước tiên hãy kiểm tra xem cấu trúc được đặt đúng.Để kiểm tra nó, điều hướng đến cài đặt -> permalinks.improper permalink structure. Therefore first check if the structure is set properly. To check it, navigate to Settings -> Permalinks.

Tệp .htaccess trong PHP là gì?

Tệp HTAccess (Access SuperText Access) là tệp cấu hình máy chủ phân phối Apache.Bạn có thể dùng .Tệp HTAccess để đặt cấu hình máy chủ cho một thư mục cụ thể.Thư mục này có thể là thư mục gốc của trang web của bạn hoặc một thư mục con khác trong đó.an Apache distributed server configuration file. You can use the . htaccess file to set server configurations for a specific directory. This directory can be the root directory of your website or another subdirectory where the .