2009-12-03 6 views
0

J'essaie de déployer un projet php/codeigniter dans un environnement d'hébergement partagé. Localement Je suis en cours d'exécution MAMP et tous mes chemins sont référencés ainsi: -Chemins relatifs/racine sur l'hébergement partagé apache/cpanel/php

background:transparent url(/img/myimj.jpg) left top no-repeat; 

Quand je Déployez le serveur mutualisé, ces liens ne fonctionnent pas et pour les résoudre, je dois ajouter « ../ ». Changer toutes ces références seul serait fastidieux. mais les chemins de codeigniter sont aussi affectés et je veux comprendre comment je peux avoir le même mapping que mon instance locale de MAMP apache.

N'étant pas bien versé dans Apache, je ne sais pas comment résoudre ce problème. J'utilise le dossier public_html racine qui a été mappé à mon utilisateur. Est-il possible d'utiliser une règle de réécriture dans un .htaccess pour le faire?

Merci pour votre temps.

Répondre

0

Vous pouvez utiliser une règle de réécriture .htaccess qui redirige simplement toutes les images/css/tout vers un répertoire spécifique.

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase /path/relative/to/web-root/ 

    RewriteRule /?([^/]+)\.css css/$1.css 
    RewriteRule /?([^/]+)\.(jpe?g|png|gif) images/$1.$2 
</IfModule> 

Cela suppose toutes vos images sont dans un dossier appelé images et tous les feuilles de style dans un dossier appelé css.

Dans ce scénario, il est préférable d'appeler les images et les feuilles de style dans votre code/css en utilisant un chemin absolu. De cette façon, les images seraient correctement mises en cache. Même si le serveur redirige toutes les images vers le même répertoire, le client ne verrait pas cela. Donc si la même image était appelée en utilisant un chemin relatif de deux fichiers dans différentes positions de l'arbre, le client verrait ces deux images différentes et ne les mettrait pas en cache correctement

+0

Merci pour votre réponse. Après vérification sur le serveur, mod_rewrite n'est pas activé: S Le compte est du type hôte virtuel et dans le cpanel, il définit public_html comme la racine www, mais pourrait-il être que la racine est en fait le répertoire ci-dessus, d'où la question des urls ne résolvant pas? – donkeykong

0

Si votre environnement "partagé" signifie que vous êtes Si vous partagez un DOCUMENT_ROOT, vous devrez faire attention avec un fichier .htaccess - car il s'agira du fichier .htaccess pour tout le monde. Sinon, si vous avez un hôte virtuel, que faudrait-il pour télécharger vos images dans/path/to/document/root/img?

+0

Après avoir essayé toutes les combinaisons, Après un peu de test, les chemins locaux absolus sur l'hôte partagé doivent être référencés comme suit: - arrière-plan: transparent (/~username/common/img/myimg.jpg); Y a-t-il quelque chose que je peux faire pour le faire comme mon serveur web local?: - arrière-plan: transparent (/common/img/myimg.jpg); – donkeykong

+0

Ah ... alors vous êtes dans ce genre d'environnement partagé. Vous devrez peut-être mordre la balle et faire les changements. Surtout que MOD_REWRITE n'est pas disponible pour vous. Trouvez un bon éditeur de recherche/remplacement. – ChronoFish

0

Merci pour vos commentaires à ce sujet. Ayant passé à travers la société d'hébergement Web, j'ai réalisé depuis que le comportement d'un hôte virtuel diffère si vous n'avez pas un ANAME pointant vers lui. En ajoutant un, le dossier public_html est mappé en tant que racine Web comme il se doit.