2012-11-27 3 views
0

Je souhaite rediriger tous les fichiers demandés de dossier-a vers dossier-b. Par exemple. http://www.yoursite.com/folder-a/index.php à http://www.yoursite.com/folder-b/index.php.Réécrire tous les fichiers d'un dossier vers un autre dossier

Comment puis-je faire cela? J'ai vérifié si mod_rewrite fonctionne avec ce code:

RewriteEngine On 
RewriteRule ^google.html$ http://www.google.com/ [R=301] 

La structure sur l'espace Web est la suivante:

.htacces
| -folder-a
| -folder-b

Mais si je veux que mon dossier redirige

RewriteEngine On 
RewriteRule ^/folder-a/(.*)$ http://www.yoursite.com/folder-b/$1 [L,R=301] 

la redirection ne fonctionne pas si je saisis le f URL uite:

http://www.yoursite.com/folder-a/
http://www.yoursite.com/folder-a/index.php

La redirection ne se fait pas. Je reste sur la même page ... Qu'est-ce que je fais mal? J'ai aussi essayé avec cette htaccess:

Options +FollowSymLinks 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/

RewriteRule ^folder-a(.*)$ http://www.yoursite.com/folder-b$1 [L,R=301] 

</IfModule> 

Si tout cela fonctionne, je veux exclure certains fichiers. Par exemple. avec ce htaccess:

RedirectPermanent /folder-a/info.php /folder-b/new-info.php 

Modifier:

Maintenant, j'ai essayé ce htaccess

redirectMatch 301 ^/folder-a/ http://www.yoursite.com/folder-b 

Cela fonctionne, mais je besoin de quelque chose qui prend tout le chemin et le réécrire dans le nouveau dossier .

Cet exemple ne fonctionne pas:

RewriteRule ^folder-a/(.*)$ folder-b/$1 

Solution

J'ai eu un vieux fichier htacess dans mon folder-a si la redirection n'a pas fonctionné. Ceci est ma dernière htaccess:

Options +FollowSymLinks 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/

RewriteRule ^folder-a/excludefile1.php http://www.yoursite.com/folder-b/newnameforfile1.php [L,R=301] 
RewriteRule ^folder-a/excludefile2.php http://www.yoursite.com/folder-b/newnameforfile2.php [L,R=301] 
RewriteRule ^folder-a/(.*)$ http://www.yoursite.com/folder-b/$1 [L,R=301] 

</IfModule> 

Répondre

2

Vous avez probablement besoin de mettre les deux règles en place: l'un pour le dossier vide et un pour les autres fichiers, puis le fourre-tout au fond. Ceci n'est pas testé:

RewriteEngine On 

RewriteRule ^folder-a/info.php http://www.yoursite.com/folder-b/new-info.php [L,R=301] 
RewriteRule ^folder-a/ http://www.yoursite.com/folder-b/ [L,R=301] 
RewriteRule ^folder-a/(.*)$ http://www.yoursite.com/folder-b/$1 [L,R=301] 
+0

Merci pour votre aide. J'ai essayé mais ça n'a pas marché. Je ne sais pas pourquoi. J'ai mis en place deux dossier de test et y mettre un fichier. Dans mon htaccess j'ai eu le suivant 'RewriteRule^test /(.*)$ http://www.yoursite.com/test2/$1 [L, R = 301]'. Cette redirection a fonctionné. Si je l'adapte à mon vrai dossier, il cesse de fonctionner ... – testing

+0

J'ai trouvé l'erreur. J'avais un vieux .htaccess dans mon dossier. Cela a arrêté la redirection de travail. Je pensais que je l'avais supprimé ... BTW: J'ai supprimé cette règle 'RewriteRule^dossier-a/http://www.yoursite.com/folder-b/ [L, R = 301]' parce que j'ai été redirigé vers folder-b/index.php. – testing

Questions connexes