2017-05-11 4 views
0

Ich habe eine Reihe von Sub-Subdomains, die ich in .htaccess umleiten muss. Ich bin bei REGEX nicht gut und habe andere Beiträge, die ich gut genug gelesen habe, nicht verstanden, um sie auf diese Situation anzuwenden.htaccess Redirect von mehreren Subdomains durch Entfernen des Punktes

sind meine Seiten wie diese angelegt:

quark.subdomain.site.com 
yy.subdomain.site.com 
bit.subdomain.site.com 
etc 

Wo die Unterdomäne kann alles sein, aber die Sub-Domain ist immer gleich.

muss ich sie umleiten:

quarksubdomain.site.com 
yysubdomain.site.com 
bitsubdomain.site.com 
etc 

Also im Grunde, ich muss nur den Punkt entfernen.

konnte ich so weit kommen, um die Antwort auf dieser Frage mit: .htaccess 301 redirect one subdomain to another, for multiple TLDs

Aber das ist jede Unterdomäne individuell tun:

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^quark.subdomain\.(.+)$ [NC] 
RewriteRule^https://quarksubdomain.%1 [L,R=301] 

RewriteCond %{HTTP_HOST} ^yy.subdomain\.(.+)$ [NC] 
RewriteRule^https://yysubdomain.%1 [L,R=301] 

Aber ich habe 30 oder so von diesen Sub-Subdomains, also hätte ich gerne etwas effizienteres.

1) Gibt es eine Wildcard-Methode, die ich verwenden kann, um den Punkt aus einer Sub-Sub-Domain der Sub-Domain zu entfernen?

2) Ich bin nicht in der Lage, einen Teil der Adresse zu übergeben, die nach der Domain .com kommt. Ich verwende CakePHP, deshalb funktioniert REQUEST_URI nicht, weil es mir Adressinformationen gibt, die Cake versteckt. Was ist der beste Weg, dies ohne REQUEST_URI zu tun?

Bonuspunkte für einen Link, der die REGEX-Sonderzeichen für Anfänger erklärt. Ich möchte meine Unwissenheit korrigieren.

Antwort

0

Nach einigem Versuch und Irrtum, ich war schließlich erfolgreich mit dem folgenden:

RewriteCond %{HTTP_HOST} ^(.+)\.subdomain\.(.*)$ [NC] 
RewriteRule ^(.*)$ https://%subdomain.%2/$1 [QSA,L,R=301] 

Es wird richtig jeden Präfix und hängt ihn an den Sub-Domain-Namen und auch die Orte passiert korrekt nach dem .com /. Ich habe es auch Domain-unempfindlich gemacht, so dass es auch nativ auf meiner Entwicklungsdomäne funktioniert.

Ich kann mir aber keine Bonuspunkte geben, weil ich immernoch nicht erklären kann, warum es genau so sein muss, um die spezifische Seitenadresse zu übergeben.

0

Sie brauchen nicht den Anforderungs-URI aus dem Zustand zu erhalten, können Sie, wenn von der Rewrite-Regel erhalten und optimieren, was Sie aus dem cond halten:

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^(.+)\.subdomain\.site\.com$ [NC] 
RewriteRule (.+) https://%1subdomain.site.com$1 [L,R=301] 

Bonus Punkt ... I don Weiß ich nicht, https://regexone.com/ vielleicht?

+0

Es tut mir leid, ich hätte klarer sein sollen. "quark1, etc" kann alles sein. Ich muss Wildcard-Präfix nehmen und es an die Rewrite-Regel übergeben. Ich bearbeite meinen Beitrag, um Klarheit zu schaffen. – dwlorimer

+0

Ich habe meine Antwort bearbeitet, das ändert sich nicht viel, wenn das Ende der Domain immer gleich ist. – Capsule

+0

Dieser Code funktioniert aus irgendeinem Grund nicht für mich. Es scheint nicht mit der Umschreibbedingung übereinzustimmen. Ich werde morgen damit rumspielen und sehen, ob es etwas ist, was ich nicht richtig mache. Und ich werde mir die Übungen auf Regexone ansehen. – dwlorimer