2017-10-12 2 views
1

Cela devrait fonctionner selon testeur htaccess http://htaccess.madewithlove.be/.htaccess plusieurs règles de redirection devraient travailler

J'essaie d'obtenir subdomain.domain.com URL dans le format pour résoudre à domain.com/index.php?sub = sous-domaine

Cependant, je veux ai aussi des liens sous forme subdomain.domain.com/pagename à rediriger vers domain.com/index.php?tpl=page & sub = url = & sous-domaine nompage

Au moment où la première règle fonctionne si je supprime la deuxième règle, mais si j'inclue les deux seulement le second ru le fonctionne.

Voici le htaccess plein

RewriteEngine On 

#EDIT: this was messing it all up by appending index.html so the subdomain only 
# wasn't triggering at all due to appended pagename 
DirectoryIndex disabled 


#Remove www 
RewriteCond %{HTTP_HOST} ^www.example.com$ [NC] 
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L] 

#Rewrite if subdomain only 
RewriteCond %{HTTP_HOST} ^(^.*)\.example.com$ [NC] 
RewriteCond %{REQUEST_URI} ^/$ 
RewriteRule ^(.*)$ http://example.com/index.php?sub=%1 [P,NC,QSA,L] 

#Rewrite if internal page 
RewriteCond %{HTTP_HOST} ^(^.*)\.example.com$ [NC] 
RewriteRule ^(.+/)?([^/]*)$ http://example.com/index.php?tpl=page&sub=%1&url=$2 [P,NC,QSA,L] 

Si vous répondez cela, je vous ferai secrétaire d'Etat une fois Flat Earth se généralise. Merci!

Répondre

1

avoir comme ceci:

DirectoryIndex disabled 
RewriteEngine On 

#Remove www 
RewriteCond %{HTTP_HOST} ^www\.(example\.com)$ [NC] 
RewriteRule^http://%1%{REQUEST_URI} [R=301,L,NE] 

RewriteCond %{HTTP_HOST} ^example\.com$ [NC] 
RewriteRule ^/?$ index.php [L] 

#Rewrite if subdomain only 
RewriteCond %{HTTP_HOST} ^(?!www\.)([^.]+)\.(example\.com)$ [NC] 
RewriteRule ^index\.php$ http://%2/index.php?sub=%1 [P,QSA,NC,L] 

#Rewrite if internal page 
RewriteCond %{HTTP_HOST} ^(?!www\.)([^.]+)\.(example\.com)$ [NC] 
RewriteRule ^(?:.+/)?([^/]+)/?$ http://%2/index.php?tpl=page&sub=%1&url=$1 [P,QSA,L] 
+0

Merci. J'ai dû changer url = $ 1 pour que les pagenames fonctionnent dans votre, la règle "subdomain only" fonctionne bien avec htaccess tester mais j'ai trouvé que pour quelque raison le serveur ou le navigateur ajoute toujours index.html comme le nom de page qui le rend pense toujours qu'il y a un nom de page pour une raison quelconque .. Je ne sais pas comment éviter cela semble automatique. Le code que j'ai posté semble fonctionner aussi bien. – xmxmxmx

+0

J'ai trouvé l'ajout de DirectoryIndex désactivé résout le problème d'index.html en cours d'ajout. – xmxmxmx

+0

Le DirectoryIndex désactivé bloque la page d'accueil afin que le code redirection www ne fonctionne pas maintenant ... J'essaie de comprendre comment garder directoryindex désactivé, mais pas index.html ajouté à chaque URL. J'ai essayé les options -indexes mais cela ne fonctionne pas du tout sur le serveur. Il se peut que je doive envoyer l'utilisateur explicitement à domain.com/index.php dans la redirection www. Cela changerait l'URL car c'est un 301 donc je dois le faire séparément peut-être. – xmxmxmx