2010-01-04 6 views
10

Mon application par défaut 'zend' a cette structure par défautZend et .htaccess

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

et le .htaccess par défaut réoriente les différents détails contrôleur/action via ./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] 

J'utilise cette URL par défaut pour accéder à l'application

http://domain/index.php 

J'ai maintenant déménagé à un hébergement mutualisé, où le Webroot est au-dessus du « ze ND 'root.

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

mais je ne peux accéder à mon application via cette URL

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

je veux être en mesure d'utiliser

http://domain/zend/index.php 

et ont redirect .htaccess.

et je me demande comment je peux modifier le fichier .htaccess pour rediriger les demandes d'URL. J'ai lu ce tutorial mais je n'aidait; le travail pour moi

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

Ceci est le contenu .htaccess dans ce cas

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] 

Quelqu'un peut-il quoi que ce soit endroit?

Répondre

17

Créer zend/index.php contenant ce code:

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

Maintenant, créez zend/.htaccess contenant ce code:

SetEnv APPLICATION_ENV development 

RewriteEngine On 
RewriteRule .* index.php 

Assurez-vous que vos images/css/js fichiers sont tous dans zend/public/et ne supprimez pas le fichier zend/public/.htaccess :)

N'oubliez pas que baseUrl de la requête n'inclut pas '/ public', vous devrez donc l'ajouter vous-même lorsque vous référez Ce public face à des fichiers.

Cordialement,

Rob ...

+0

J'ai essayé votre méthode - mais la page Web a perdu tout formatage (accès à css etc.). J'utilise l'application squelette – ChrisBorg

+0

le tutoriel sur le lien fourni par emeraldjava effectivement travaillé pour moi. Y a-t-il quelque chose d'incorrect que l'on ne devrait pas faire? – ChrisBorg

+0

@Rob Allen c'est un travail pour moi. une quetion, comment définir basePath globalement de sorte qu'il puisse obtenir le dossier vis-à-vis du public? Merci. – DS9

0

La plupart des hôtes partagés que j'ai utilisé vous permettent encore de télécharger des fichiers en dehors de la racine web. Par exemple,

/home/{username}/webroot/ 

...vous pouvez toujours télécharger à /home/{username}/ comme:

/webroot 
    index.php 
    .htaccess 
/application 
/config 

Puis dans votre bootstrap, il suffit de remplacer public avec webroot, ou si vous avez un accès ssh supprimer le Webroot existant et le remplacer par un lien symbolique vers le zend répertoire public, comme :

rm -f webroot 
ln -s public webroot