2010-01-04 36 views
10

mặc định của tôi 'zend' ứng dụng có cấu trúc mặc định nàyZend và .htaccess

/zend + webroot 
    /application 
    /config 
    /library 
    /public 
     .htaccess 
     index.php 

và .htaccess mặc định chuyển hướng các chi tiết điều khiển/hành động khác nhau qua ./public/index.php

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 
RewriteRule ^.*$ index.php [NC,L] 

Tôi sử dụng url mặc định này để truy cập ứng dụng

http://domain/index.php 

Bây giờ tôi đã chuyển sang máy chủ dùng chung, trong đó webroot nằm phía trên 'ze 'gốc'.

/webroot 
    /zend 
     /application 
     /config 
     /public 
      index.php 
      .htaccess 

nhưng tôi chỉ có thể truy cập vào ứng dụng của tôi qua URL này

http://domain/zend/public/index.php 

tôi muốn để có thể sử dụng

http://domain/zend/index.php 

và có chuyển hướng .htaccess.

và tôi tự hỏi làm thế nào tôi có thể tinh chỉnh tệp .htaccess để chuyển hướng các yêu cầu URL. Tôi đọc này tutorial nhưng tôi didn; t làm việc cho tôi

/webroot 
    /zend 
     .htaccess 
     /application 
     /config 
     /library 
     /public 
      index.php 

Đây là nội dung .htaccess trong trường hợp này

RewriteEngine On 

RewriteRule ^\.htaccess$ - [F] 

RewriteCond %{REQUEST_URI} ="" 
RewriteRule ^.*$ /public/index.php [NC,L] 

RewriteCond %{REQUEST_URI} !^/public/.*$ 
RewriteRule ^(.*)$ /public/$1 

RewriteCond %{REQUEST_FILENAME} -f 
RewriteRule ^.*$ - [NC,L] 

RewriteRule ^public/.*$ /public/index.php [NC,L] 

ai có thể nhận ra bất cứ điều gì?

Trả lời

17

Tạo zend/index.php chứa mã này:

<?php include 'public/index.php'; 

Bây giờ tạo zend/.htaccess chứa mã này:

SetEnv APPLICATION_ENV development 

RewriteEngine On 
RewriteRule .* index.php 

Hãy chắc chắn rằng hình ảnh của bạn/css/js là tất cả trong zend/public/và không xóa tệp zend/public/.htaccess :)

Đừng quên rằng baseUrl của yêu cầu không bao gồm '/ public', vì vậy bạn sẽ cần tự thêm nó khi bạn giới thiệu các tệp công khai của CE.

Kính trọng,

Rob ...

+0

tôi đã thử phương pháp của bạn - tuy nhiên trang web đã mất tất cả định dạng (quyền truy cập vào css, v.v.). Tôi đang sử dụng ứng dụng skeleton – ChrisBorg

+0

hướng dẫn về liên kết được cung cấp bởi emeraldjava thực sự đã làm việc cho tôi. có cái gì đó không chính xác trong đó mà người ta không nên làm? – ChrisBorg

+0

@Rob Allen đó là công việc cho tôi. một quetion, làm thế nào để thiết lập basePath trên toàn cầu để nó có thể nhận được tệp công khai? Cảm ơn. – DS9

0

host chia sẻ Hầu hết tôi đã sử dụng vẫn cho phép bạn upload các file ngoài thư mục gốc web. Ví dụ:

/home/{username}/webroot/ 

...bạn vẫn có thể tải lên /home/{username}/ như:

/webroot 
    index.php 
    .htaccess 
/application 
/config 

Sau đó, trong bootstrap của bạn, chỉ cần thay thế public với webroot, hoặc nếu bạn có quyền truy cập ssh xóa webroot hiện và thay thế bằng một liên kết tượng trưng đến thư mục công cộng zend, như :

rm -f webroot 
ln -s public webroot 
Các vấn đề liên quan