2011-06-12 2 views
0

J'ai cherché une réponse à cela pendant un moment et j'ai essayé beaucoup de trucs moi-même, mais en vain, alors j'apporte mes questions à tous les sages.Rediriger l'intégralité du répertoire comme mon répertoire personnel avec mod_rewrite

J'ai un site Web tout prêt à partir. L'intégralité du contenu de ce site est dans le répertoire principal "www" du site. Alors maintenant, quand je vais à www.mywebsite.com/main, il va dans le fichier www/main.php. Cependant, je veux déplacer tout le contenu de mon site web dans un nouveau dossier dans le répertoire www, que j'appellerai "ts". Alors maintenant, mon fichier main.php sera dans www/ts/main.php

Cependant, le problème que je suis est que je veux que tous les URI restent les mêmes, donc je veux dire au serveur que www.mywebsite .com/main se trouve maintenant sur www/ts/main.php au lieu de l'endroit où il était auparavant (www /), et tout le contenu suivant se trouve maintenant dans www/ts au lieu de www /. J'imagine que j'aurai besoin d'un fichier .htaccess dans mon répertoire www/qui indique au serveur que le chemin absolu de www.mywebsite.com se trouve sur www/ts /, mais je ne suis pas sûr de savoir comment le faire . J'ai aussi un fichier .htaccess dans mon nouveau répertoire www/ts/redirigeant déjà de nombreux URIs, mais j'imagine que je dois dire au serveur que tous les fichiers dans le répertoire doivent ignorer le/ts/URI, encore une fois, je suis Je ne sais pas comment faire ça.

Si quelqu'un est capable de me diriger dans la bonne direction, je serais très obligé. Merci.

EDIT: Je suis sur un serveur partagé, donc je n'ai accès à aucun des fichiers conf, donc j'ai besoin d'une solution impliquant mod_rewrite à la place. Merci.

Répondre

0

Vous avez juste besoin de spécifier où est le DocumentRoot de votre VirtualHost. Vérifiez la configuration d'Apache pour votre Virtualhost (c'est peut-être la configuration par défaut, mais vous pouvez en créer une pour votre site nommé). Et vérifiez la balise DocumentRoot.

Si c'était quelque chose comme:

DocumentRoot /foo/bar/www 

Alter à:

DocumentRoot /foo/bar/www/ts 

Et voilà tout.

Edit:

Avec la restriction de n'accéder à un .htaccess et si nous supposons que vous limiterez cette nouvelle redirection de dossiers pour un seul nom DNS (comme si vous faites un subdir il est peut-être faire d'autres sous-répertoires plus tard) cela devrait fonctionner:

RewriteEngine On 
# limit this rule on the www.mywebsite.com DNS name requested 
RewriteCond %{SERVER_NAME} ^www\.mywebsite\.com$ 
# limit infinite recursion, when filename is ok... 
# no, in fact not # RewriteCond %{REQUEST_FILENAME} !-f 
# well this one is better, no loop for mod_rewrite, even on 404 
# the rule is applied only once 
RewriteCond %{ENV:REDIRECT_STATUS} ^$ 
# so here's the rule, map the requested file on the filesystem in ts subdir 
RewriteRule ^(.*)$ /var/www/ts/$1 [L] 
+0

Désolé, je devrais être plus clair - je suis sur un serveur partagé, donc je n'ai pas accès à l'un des fichiers de configuration, donc je besoin d'une solution impliquant la place mod_rewrite . Je vais ajouter mon message pour inclure cette information. – Kevin

+0

Mon ami, merci beaucoup. Cela fonctionne très bien, très apprécié et m'a sauvé une autre semaine de maux de tête. – Kevin

Questions connexes