Tôi đang cố triển khai ứng dụng web Symfony trên máy chủ chỉ cấp quyền truy cập ftp, không có khả năng ssh và tôi chỉ có thể đặt tệp trên hai thư mục gốc: thư mục/data và/html. Tôi đang cố gắng đặt các tệp Symfony bên trong thư mục de html nhưng htaccess mà gói web apache tạo không hoạt động, chỉ hoạt động trên cục bộ và tôi gặp lỗi 500 trên màn hình. Nhật ký cũng không giúp được gì, chỉ có các thông báo 404 chung chung.
Bất kỳ suy nghĩ? Tôi đang cố gắng làm theo hướng dẫn từ các bài đăng khác như thế này từ @runawaycoin nhưng không thành công: https://medium.com/@runawaycoin/deploying-symfony-4-application-to-shared-hosting-with-just-ftp-access-e65d2c5e0e3d
Tôi đặt .htaccess mà gói Symfony apache tạo cục bộ tại thư mục/html được cho là cấu hình duy nhất.
Đây là mã từ .htaccess:
# Sử dụng bộ điều khiển phía trước làm tệp chỉ mục. Nó phục vụ như một giải pháp dự phòng khi
# mọi thao tác viết lại/chuyển hướng khác đều không thành công (ví dụ: trong môi trường bí danh không có
# mod_rewrite). Ngoài ra, điều này làm giảm quá trình so khớp cho
# trang bắt đầu (đường dẫn "/") vì nếu không thì Apache sẽ áp dụng quy tắc viết lại
# cho mỗi tệp DirectoryIndex được định cấu hình (ví dụ: index.php, index.html, index.pl).
Directory Index index.php
`
# Theo mặc định, Apache không đánh giá các liên kết tượng trưng nếu bạn không kích hoạt tính năng này
# tính năng trong cấu hình máy chủ của bạn. Bỏ ghi chú dòng sau nếu bạn
# cài đặt nội dung dưới dạng liên kết tượng trưng hoặc nếu bạn gặp sự cố liên quan đến liên kết tượng trưng
# khi biên dịch nội dung LESS/Sass/CoffeScript.
# Tùy chọn +Theo dõiSymlinks
# Vô hiệu hóa MultiViews ngăn thương lượng không mong muốn, ví dụ: "/index" không nên giải quyết
# vào bộ điều khiển phía trước "/index.php" nhưng được viết lại thành "/index.php/index".
<IfModule mod_negotiation.c>
Tùy chọn -MultiViews
</IfModule>
<IfModule mod_rewrite.c>
Viết LạiEngine Trên
# Tự động xác định RewriteBase và đặt nó làm biến môi trường.
# Nếu bạn đang sử dụng bí danh Apache để thực hiện lưu trữ ảo hàng loạt hoặc cài đặt
# dự án trong thư mục con, đường dẫn cơ sở sẽ được thêm vào trước để cho phép thích hợp
# độ phân giải của tệp index.php và để chuyển hướng đến đúng URI. Nó sẽ
# cũng hoạt động trong môi trường không có tiền tố đường dẫn, cung cấp một kích thước an toàn,
# phù hợp với tất cả các giải pháp. Nhưng vì bạn không cần nó trong trường hợp này, bạn có thể bình luận
# 2 dòng sau để loại bỏ chi phí.
RewriteCond %{REQUEST_URI}::$0 ^(/.+)/(.*)::\2$
RewriteRule .* - [E=BASE:%1]
# Đặt tiêu đề HTTP_AUTHORIZATION bị Apache xóa
RewriteCond %{HTTP:Authorization} .+
RewriteRule ^ - [E=HTTP_AUTHORIZATION:%0]
# Chuyển hướng đến URI không có bộ điều khiển phía trước để ngăn nội dung trùng lặp
# (có và không có `/index.php`). Chỉ thực hiện chuyển hướng này vào lần đầu tiên
# viết lại bởi Apache chứ không phải trong các chu kỳ tiếp theo. Nếu không, chúng tôi sẽ nhận được một
# vòng lặp chuyển hướng vô tận (yêu cầu -> viết lại vào bộ điều khiển phía trước ->
# chuyển hướng -> yêu cầu -> ...).
# Vì vậy, trong trường hợp bạn gặp lỗi "quá nhiều chuyển hướng" hoặc bạn luôn bị chuyển hướng
# đến trang bắt đầu vì Apache của bạn không hiển thị REDIRECT_STATUS
# biến môi trường, bạn có 2 lựa chọn:
# - tắt tính năng này bằng cách bình luận 2 dòng sau hoặc
# - sử dụng Apache >= 2.3.9 và thay thế tất cả cờ L bằng cờ END và xóa
# sau RewriteCond (giải pháp tốt nhất)
RewriteCond %{ENV:REDIRECT_STATUS} = ""
RewriteRule ^index\.php(?:/(.*)|$) %{ENV:BASE}/$1 [R=301,L]
# Nếu tên tệp được yêu cầu tồn tại, chỉ cần cung cấp nó.
# Chúng tôi chỉ muốn cho phép Apache phục vụ các tệp chứ không phải các thư mục.
# Viết lại tất cả các truy vấn khác vào bộ điều khiển phía trước.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ %{ENV:BASE}/index.php [L]
</IfModule>
<IfModule !mod_rewrite.c>
<IfModule mod_alias.c>
# Khi không có mod_rewrite, chúng tôi hướng dẫn chuyển hướng tạm thời của
# trang bắt đầu đến bộ điều khiển phía trước một cách rõ ràng để trang web
# và các liên kết được tạo vẫn có thể được sử dụng.
RedirectMatch 307 ^/$ /index.php/
# RedirectTemp không thể được sử dụng thay thế
</IfModule>
</IfModule>
Bây giờ tôi đang cố gắng đặt một index.php đơn giản với "xin chào" tại không hoạt động :(
Những người từ bộ phận hỗ trợ chỉ nói với tôi rằng chúng tôi chỉ có thư mục/html và thư mục/data để hoạt động.
Cảm ơn!