Nó cũng có thể là do chuyển hướng máy chủ.
Vui lòng kiểm tra đầu ra phpinfo và kiểm tra $_SERVER['REDIRECT_MAGE_IS_DEVELOPER_MODE']
biến.
Giải trình :
Nếu bạn đang làm việc với mô-đun Apache mod_rewrite và muốn thiết lập một số vars môi trường, hướng dẫn Apache nói rằng các vars này có thể được truy cập trong CGI bằng cách sử dụng $ENV{VAR}
. Trong PHP Bạn có thể muốn viết $_ENV['VAR']
để lấy giá trị của VAR, nhưng Bạn phải truy cập nếu thông qua $_SERVER
và theo một số cách khác nhau:
- Ví dụ: .htaccess và example.php
RewriteEngine trên RewriteRule ^? Var1 = ([^;] ); var2 = ([^;] ) $ \ - [E = VAR1: $ 1, E = VAR2: $ 2]
- Ví dụ: .htaccess và index.php
RewriteEngine trên RewriteRule ^ index.php $ - [L] RewriteRule? Var1 = ([^;] ); var2 = ([^;] ) $ \ index.php [E = VAR1: $ 1, E = VAR2: $ 2]
Lưu ý: Nếu bất kỳ RewriteRule nào khớp, chuyển hướng nội bộ hơn khởi động lại (sau quy tắc được xác định cuối cùng hoặc ngay sau quy tắc phù hợp có cờ L) kiểm tra lại toàn bộ quy tắc. Đối với chuyển hướng nội bộ, mọi VAR được xác định sẽ có tiền tố 'REDIRECT_', tức là VAR1 sẽ là REDIRECT_VAR1, VAR2 sẽ là REDIRECT_VAR2.
Tất nhiên, bạn có thể (bổ sung) xác định lại VAR gốc:
RewriteEngine on RewriteRule ^ index.php $ \ - [E = var1:% {REDIRECT_VAR1}, E = var2:% {REDIRECT_VAR2}, L]? RewriteRule var1 = ([^;] ); var2 = ([^;] ) $ \ index.php [E = VAR1: $ 1, E = VAR2: $ 2]
Với điều này, bạn sẽ có $_SERVER['REDIRECT_VAR*']
và $_SERVER['VAR*']
.
Các ví dụ đã cho chỉ để giải thích, trong mọi trường hợp, chúng không nhằm phù hợp với nhu cầu của bạn. "\" Trong các ví dụ .htaccess chỉ dành cho mục đích hiển thị, chúng không nên xuất hiện trong tệp .htaccess thực. Dấu phân cách đối số ';' trong các liên kết cũng có thể là '&', nhưng điều này có thể gây ra một số rắc rối với HTML / XHTML. Xem các trang sau để biết thêm thông tin về vấn đề này: