Ist es möglich, mit .htaccess eine Subdomain in ein Verzeichnis umzuschreiben?
Beispiel:
zeigt den Inhalt von
Ist es möglich, mit .htaccess eine Subdomain in ein Verzeichnis umzuschreiben?
Beispiel:
zeigt den Inhalt von
Antworten:
Versuchen Sie, dies in Ihre .htaccess-Datei aufzunehmen:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^sub.domain.com
RewriteRule ^(.*)$ /subdomains/sub/$1 [L,NC,QSA]
Für eine allgemeinere Regel (die mit jeder Subdomain funktioniert, nicht nur sub
) ersetzen Sie die letzten beiden Zeilen durch folgende:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com
RewriteRule ^(.*)$ subdomains/%1/$1 [L,NC,QSA]
P
zusätzlich zu dem ein Flag angeben L
.
http://test.domain.com/subdomains/test/
, wenn ich nur möchte, dass es http://test.domain.com/
test.domain.com/subdomains/test
- vielleicht ist hier noch etwas los. Können Sie RewriteBase /
gleich danach hinzufügen RewriteEngine on
? Wenn Sie möchten, dass es weiterhin test.domain.com
angezeigt wird, müssen Sie mod_proxy und das [P]
Flag verwenden.
Ich bin kein mod_rewrite-Experte, ich habe oft Probleme damit, aber ich habe dies auf einer meiner Websites getan. Je nach Ihren Umständen sind möglicherweise andere Flags usw. erforderlich. Ich benutze dies:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^subdomain\.example\.com$
RewriteCond %{REQUEST_URI} !^/subdomains/subdomain
RewriteRule ^(.*)$ /subdomains/subdomain/$1 [L]
Alle anderen Umschreiberegeln für den Rest der Site müssen anschließend ausgeführt werden, um zu verhindern, dass sie das Umschreiben Ihrer Subdomain beeinträchtigen.
.htaccess
auf diese Seite kommt (wie ich), müssen Sie neben dem Erstellen der eigentlichen .htaccess
Datei auch AllowOverride
Ihre VirtualHost
Einstellungen vornehmen ( stackoverflow.com/a/22819550/1657502 ) , damit sie wirksam wird. , aktivieren Sie das Apache- rewrite
Modul und starten Sie Apache neu ( stackoverflow.com/a/5758551/1657502 )
www.
Präfix wird wahrscheinlich am besten über eine Umleitung als über ein Umschreiben unterstützt.
Sie können die folgende Regel in .htaccess verwenden , um eine Unterdomäne in einen Unterordner umzuschreiben:
RewriteEngine On
# If the host is "sub.domain.com"
RewriteCond %{HTTP_HOST} ^sub.domain.com$ [NC]
# Then rewrite any request to /folder
RewriteRule ^((?!folder).*)$ /folder/$1 [NC,L]
Zeile für Zeile Erklärung:
RewriteEngine on
Die obige Zeile weist den Server an, die Engine zum Umschreiben von URLs einzuschalten.
RewriteCond %{HTTP_HOST} ^sub.domain.com$ [NC]
Diese Zeile ist eine Bedingung für die RewriteRule, bei der wir mithilfe eines Regex-Musters mit dem HTTP-Host übereinstimmen. Die Bedingung besagt, dass wenn der Host sub.domain.com ist, die Regel ausgeführt wird.
RewriteRule ^((?!folder).*)$ /folder/$1 [NC,L]
Die Regel stimmt mit http://sub.domain.com/foo überein und leitet sie intern an http://sub.domain.com/folder/foo weiter .
Ersetzen Sie sub.domain.com durch Ihre Subdomain und Ihren Ordner durch den Namen des Ordners, auf den Sie Ihre Subdomain verweisen möchten.
Ich hatte das gleiche Problem und fand eine ausführliche Erklärung unter http://www.webmasterworld.com/apache/3163397.htm
Meine Lösung (der Inhalt der Subdomains sollte sich in einem Ordner namens befinden sd_subdomain
:
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} subdomain\.domain\.com
RewriteCond $1 !^sd_
RewriteRule (.*) /sd_subdomain/$1 [L]
Dadurch wird in denselben Ordner zu einer Unterdomäne umgeleitet:
RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} ^([^\.]+)\.domain\.com$ [NC]
RewriteRule ^(.*)$ http://domain\.com/subdomains/%1
Versuchen Sie, diese .htaccess-Datei im Subdomain-Ordner abzulegen:
RewriteEngine On
RewriteRule ^(.*)?$ ./subdomains/sub/$1
Es wird zu http://domain.com/subdomains/sub/ weitergeleitet , wenn nur http://sub.domain.com/ angezeigt werden soll.
Subdomain-Verzeichnis umleiten:
RewriteCond %{HTTP_HOST} ^([^.]+)\.(archive\.example\.com)$ [NC]
RewriteRule ^ http://%2/%1%{REQUEST_URI} [L,R=301]
Verwenden Sie für jede Subdomain-Anfrage Folgendes:
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.band\.s\.co
RewriteCond %{HTTP_HOST} ^(.*)\.band\.s\.co
RewriteCond %{REQUEST_URI} !^/([a-zA-Z0-9-z\-]+)
RewriteRule ^(.*)$ /%1/$1 [L]
Machen Sie einfach einen Ordner gleich dem Sub-Domain-Namen, den Sie benötigen. Der Ordner muss wie folgt vorhanden sein: domain.com/sub für sub.domain.com .
http://test.domain.com
, leitet mich die URL weiterhttp://test.domain.com/subdomains/test/
. Ist es möglich, ohne das/subdomains/test/
am Ende zu zeigen?