2016-09-19 4 views
0

Ich habe einen Apache-Server, der Haupt rootwebdir ist "/ usr/www/users/foo /" und "foo.com" Punkte dort. Allerdings habe ich einige Sub-Domains in ihre Verzeichnisse zeigen:Apache: Benutzer den Zugriff auf "www.foo.com/subdomain1/"

subdomain1.foo.com ---> /usr/www/users/foo/subdomain1 
subdomain2.foo.com ---> /usr/www/users/foo/subdomain2 

Dies bewirkt, dass mir ein Problem: wenn jemand Typen ‚www.foo.com/subdomain1/aboutme.html‘ finden sie ‚subdomain1.foo.com/ aboutme.html 'mit einer anderen URL, und ich möchte es vermeiden.

Ich fragte mich, ob es eine Möglichkeit gibt, dies zu vermeiden (z. B. eine 404-Seite anzuzeigen), indem Sie eine Direktive in der '.htaccess' Datei von '/ usr/www/users/foo/subdomain1' verwenden.

Jede andere Lösung ist willkommen. Vielen Dank.

+0

sicher, können Sie sicherlich Umleitungsregeln Hinweis auf einen Fehler Dokument erstellen, das mit zwei Bedingungen gekoppelt ist: die Kombination von Domain-Namen und relativen Pfad, der angefordert wird. Die Frage ist jedoch: Warum willst du das machen? Warum halten Sie nicht einfach die Dokumentwurzeln getrennt und alles ist in Ordnung? – arkascha

+0

Da mein Webhost-Provider mir Zugriff auf '/ usr/www/users/foo /' gibt, und hier landet 'foo.com'. Wenn ich versuche, eine neue Subdomain "sub1.foo.com" zu erstellen, würde sie in "/ usr/www/users/foo/sub1" landen. – Hookstark

Antwort

1

Sie können Anforderungen an die Kombination einer bestimmten Subdomäne und eines bestimmten Pfads zu einem benutzerdefinierten Fehlerdokument neu schreiben. Das sollte die einfachste:

RewriteEngine on 
RewriteCond %{HTTP_HOST} !^subdomain1\.foo\.com$ [NC] 
RewriteRule ^subdomain1 http://foo.com/not-found.html [L] 

Dies kann in einer .htaccess Style-Datei oder in der realen http-Server-Host-Konfiguration durchgeführt werden. Die zweite Option sollte wann immer möglich bevorzugt werden. .htaccess Stildateien sind notorisch fehleranfällig, schwer zu debuggen und die wirklich verlangsamen den Server, oft für nichts. Sie werden nur für Situationen zur Verfügung gestellt, in denen nicht Zugriff auf die reale Konfiguration (lesen Sie: "billige Hosting-Provider") oder wo eine Anwendung erfordert, diese Dateien selbst zu schreiben (was sicherlich ein Sicherheitsalarm ist ...).

Die Version für die http-Server-Host-Konfiguration würde etwas kürzer und eleganter sein, da der Host implizit festgelegt ist: diese Regel also in jedem einzelnen Sub-Domain-Verzeichnis verwenden können

RewriteEngine on 
RewriteRule ^/subdomain1 http://foo.com/not-found.html [L] 
1

Sie subdomain1/.htaccess Zugang zu sperren Häupter mit foo.com Domain:

RewriteEngine on  
RewriteCond %{HTTP_HOST} ^(www\.)?foo\.com$ [NC] 
RewriteRule^- [F] 
Verwandte Themen