Tôi phải chạy ứng dụng CakePHP 2.1 của mình trong môi trường với CGI-PHP và không có khả năng khai báo bí danh apache. Tôi muốn chuyển hướng các yêu cầu đến một tên miền phụ tới CakePHP bằng mod_rewrite, nhưng điều này không hiệu quả.CakePHP, CGI và mod_rewrite
thiết lập hiện tại
- Webroot là
~/user/public_html
- CakePHP là trong
~/user/public_html/cakephp/
- CakePHP nên được yêu cầu tại
dev.mydomain.tld
Những gì tôi có cho đến nay là thế này (tất cả các đường dẫn tương đối vào webroot):
~/user/public_html/.htaccess
RewriteEngine on Options +FollowSymlinks RewriteCond %{HTTP_HOST} ^(www\.)?dev\.mydomain.com$ [NC] RewriteCond %{REQUEST_URI} !^/cakephp/app/webroot/ [NC] RewriteCond %{REQUEST_URI} !/$ RewriteCond %{DOCUMENT_ROOT}/cakephp/app/webroot%{REQUEST_URI}/ -d RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1/ [R,L] RewriteCond %{HTTP_HOST} ^(www\.)?dev\.mydomain.com$ [NC] RewriteCond %{REQUEST_URI} !^/cakephp/app/webroot/ [NC] RewriteRule ^(.*)$ /cakephp/app/webroot/$1 [L]
~/user/public_html/cakephp/app/webroot/.htaccess
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php [QSA,L]
Vấn đề
Yêu cầu được bằng cách nào đó không được định tuyến một cách chính xác (ứng dụng chạy không có vấn đề trong môi trường phát triển của tôi với PHP như một mô-đun và Máy chủ ảo ở cấp độ /cakephp/app/webroot/
). Khi tôi yêu cầu trang chủ tại dev.mydomain.tld
Tôi chỉ nhận được một Error, Cake nói với tôi rằng CakephpController bị thiếu.
thông tin gỡ lỗi
những phần thú vị của
$_SERVER
sửa lỗi như dòng đầu tiên trong/cakephp/app/webroot/index.php
[REDIRECT_REDIRECT_REDIRECT_STATUS] => 200 [REDIRECT_REDIRECT_STATUS] => 200 [REDIRECT_HANDLER] => php-script [REDIRECT_STATUS] => On [HTTP_HOST] => dev.mydomain.tld [HTTP_CONNECTION] => keep-alive [SERVER_SOFTWARE] => Apache/2.2.21 (Unix) [SERVER_NAME] => dev.mydomain.tld [SERVER_ADDR] => 192.0.43.10 [SERVER_PORT] => 80 [DOCUMENT_ROOT] => /home/user/public_html [SCRIPT_FILENAME] => /home/user/public_html/cakephp/app/webroot/index.php [REDIRECT_URL] => /cakephp/app/webroot/index.php [GATEWAY_INTERFACE] => CGI/1.1 [SERVER_PROTOCOL] => HTTP/1.1 [REQUEST_METHOD] => GET [QUERY_STRING] => [REQUEST_URI] =>/ [SCRIPT_NAME] => /cakephp/app/webroot/index.php [_PHP5_WORK_DIR] => /home/user/public_html/cakephp/app/webroot [PHP_SELF] =>/ [ORIG_PATH_INFO] => [ORIG_PATH_TRANSLATED] => /home/user/public_html/cakephp/app/webroot/index.php [PATH_INFO] => /cakephp/app/webroot/index.php
những phần thú vị của đối tượng
CakeRequest
truyền cho các điều phối:url => 'cakephp/app/webroot/index.php' base => '/cakephp' webroot => '/app/webroot/' here => '/cakephp/cakephp/app/webroot/index.php'
Câu hỏi
Vì vậy, những gì tôi không nhận được ở đây, là lý do tại sao các đối tượng CakeRequest có tham chiếu đến các cấu trúc thư mục của tôi trong khi $_SERVER['REQUEST_URI'] == '/'
. Tôi phải làm gì, để có được quyền này? Và ngay từ đầu, tôi nên tìm vấn đề ở đâu trong chỉ thị mod_rewrite hoặc trong CakePHP? Tôi đã thử một số thứ, bao gồm thiết lập RewriteBase trong các tệp .htaccess và các cài đặt khác nhau cho App.baseUrl
trong đối tượng Cấu hình, nhưng dường như không có gì để trợ giúp ở đây.
Tôi thực sự biết ơn nếu ai đó có thể cho tôi một con trỏ về cách giải quyết vấn đề này.
Cảm ơn con trỏ! Tôi đã không đọc nó trước đây, nhưng bạn nói đúng, nó trông khá giống nhau. Thật đáng tiếc là giải pháp được đề xuất cũng không giúp ích gì cho trường hợp của tôi. Tôi có thể sẽ liên kết 'ứng dụng/webroot' của tôi với webroot khó khăn để giải quyết vấn đề này, điều này chắc chắn sẽ chỉ chuyển vấn đề cho tương lai. Tôi vẫn sẽ thực sự quan tâm đến việc giải quyết điều này, thậm chí nhiều hơn sau khi nhìn thấy bạn có cùng một vấn đề. Tái bút: Không có WAMP nào tham gia ở đây. – bfncs
Bạn cũng có thể đọc điều này, đặc biệt là các nhận xét, đó là cách tôi giải quyết vấn đề của mình: http://bakery.cakephp.org/articles/BBBThunda/2010/02/25/troubleshooting-cakephp-installation-issues-related-to- apache-2-mod_rewrite-cho-người mới bắt đầu –
ALS, cuối cùng tôi đã chọn bạn trả lời bởi vì nó đến gần nhất với những gì tôi cần và tôi không muốn lãng phí các điểm. Nó khá chắc chắn, rằng có một số cấu hình sai máy chủ lạ của hoster liên quan và họ đang làm việc trên sửa chữa nó. Quá lâu, tôi sẽ ghi đè lên các giá trị trong '$ _SERVER' với các giá trị mặc định hợp lý. Đó là thực sự, thực sự xấu xí, nhưng nó hoạt động như một giải pháp cho đến khi cấu hình máy chủ đã được cố định. – bfncs