2016-06-27 1 views
1

Je dois faire une redirection cachée de sitename.dom à sitename.dom2 en gardant le reste de la chaîne intacte.Comment réécrire pour l'URL exacte seulement

Pour l'instant j'utiliser:

RewriteCond %{HTTP_HOST} ^sitename.dom 
RewriteRule ^(.*) http://sitename.dom2/$1 [P] 

et il fonctionne parfaitement. Mais. En raison de multilangue sur mon site le frontpage a le chemin suivant:

sitename.dom2/lang 

c'est pourquoi lorsque l'utilisateur appelle sitename.dom il est redirigé (caché) à sitename.dom2/ et il devient page 404.

Alors, s'il vous plaît aviser comment faire une redirection stricte pour la demande exacte seulement sitename.dom sans plus?

J'avais essayé

RewriteCond %{HTTP_HOST} ^sitename\.dom$ 
RewriteCond %{QUERY_STRING} ^$ 
RewriteRule ^(.*) http://sitename.dom2\/lang [P] 

sans chance.

BTW, à l'intérieur du sous-chemin de langue de site Web n'affecte pas du tout. sitename.dom/lang/page fonctionne aussi bien que sitename.dom/page

Répondre

0

je devais ajouter la redirection unique avant tous les autres. Et utilisez dom2 au lieu de dom1 dans cette règle.

Voici la solution:

RewriteEngine On 

#redirect front page only: 
RewriteCond %{HTTP_HOST} ^sitename\.dom2$ [OR] 
RewriteCond %{HTTP_HOST} ^www\.sitename\.dom2$ 
RewriteRule ^/?$ "http\:\/\/sitename\.dom2/\lang" [L] 

#redirect all other pages: 
RewriteCond %{HTTP_HOST} ^sitename\.dom2 
RewriteRule ^(.*) http://sitename\.dom1\/$1 [P] 
0

Ajoutez simplement /lang dans votre première directive RewriteRule:

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^sitename.dom$ 
RewriteRule^http://sitename.dom2/lang%{REQUEST_URI} [P] 
+0

Merci, mais cela n'a pas fonctionné. Je suppose que j'ai déjà essayé quelque chose comme ça. Maintenant, je reçois 404 à la fois sur citename.dom et citename.dom/lang. Impossible d'accéder à la première page – Andriy