Ich habe ein Problem damit, ein Unterverzeichnis als public_html für meine Hauptdomäne einzurichten und eine Lösung zu finden, die auch mit den Unterverzeichnissen dieser Domäne funktioniert.
Mein Hosting ermöglicht es mir, mehrere Websites zu hosten, die alle großartig funktionieren. Ich habe einen Unterordner unter meinem~/öffentlich_html/Verzeichnis mit dem Namen/Domänen/, wo ich für jede einzelne Website einen Ordner erstelle. zB
- öffentliche_html
- Domänen
- websiteone
- websitetwo
- websitethree
- ...
- Domänen
Dadurch bleiben meine Websites schön und ordentlich. Das einzige Problem war, meine „Hauptdomäne“ in dieses System einzufügen. Es scheint, dass meine Hauptdomäne irgendwie an mein Konto (oder an Apache oder so etwas) gebunden ist, sodass ich das „Dokumentenstammverzeichnis“ dieser Domäne nicht ändern kann. Ich kann die Dokumentstammverzeichnisse für alle anderen Domänen („Addon-Domänen“), die ich in cPanel hinzufüge, problemlos definieren. Aber die Hauptdomäne ist anders.
Mir wurde gesagt, ich solle die .htaccess-Datei bearbeiten, um die Hauptdomäne in ein Unterverzeichnis umzuleiten. Das funktionierte anscheinend einwandfrei und meine Site funktioniert auf ihrer Start-/Indexseite einwandfrei.
Mein Problem besteht darin, dass wenn ich versuche, in meinem Browser beispielsweise zum Bilderordner (nur als Beispiel) meiner Hauptseite zu navigieren, es folgendermaßen aussieht:
www.IhreHauptdomain.com/Bilder/
dann scheint es die Umleitung zu ignorieren und zeigt das gesamte Serververzeichnis in der URL an, wie folgt:
www.IhreMaindomain.com/domains/IhreMaindomain/Bilder/
Es wird immer noch die korrekte Seite „Index von /Bildern“ und die Liste aller meiner Bilder angezeigt.
Hier ist ein Beispiel meiner .htaccess-Datei, die ich verwende:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?yourmaindomain.com$
RewriteCond %{REQUEST_URI} !^/domains/yourmaindomain/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /domains/yourmaindomain/$1
RewriteCond %{HTTP_HOST} ^(www.)?yourmaindomain.com$
RewriteRule ^(/)?$ domains/yourmaindomain/index.html [L]
Sieht diese htaccess-Datei richtig aus? Ich muss nur dafür sorgen, dass sich meine Hauptdomäne wie eine Add-On-Domäne verhält und ihre Unterverzeichnisse den Umleitungsregeln entsprechen.
Antwort1
DirectorySlash
Ich würde ihn als Schurken bezeichnen .
- Passiert das nur bei Verzeichnissen?
- Passiert dies nur, wenn kein abschließender Schrägstrich vorhanden ist (d. h.
/images
geht zu/domain/yourdomain/images/
,/images/
ist aber in Ordnung)?
In diesem Fall gibt es drei Möglichkeiten:
- Stellen Sie sicher, dass alle Links einen abschließenden Schrägstrich (
/
) haben. - Set
DirectorySlash off
(führt zu doppelten Seiten/Verzeichnissen, was aus SEO-Sicht nicht schön ist). RewriteRule
Versuchen Sie, das „a“ direkt vor dem letzten hinzuzufügenindex.html
: (habe ich mir spontan ausgedacht, weiß nicht, ob es funktioniert)RewriteCond %{REQUEST_FILENAME} -d RewriteCond %{REQUEST_FILENAME} !/$ RewriteRule ^(.*) $1/
Antwort2
Eines Ihrer Probleme ist Ihr Regex: Sie sindnichtEscapen Ihres Punktes. Das bedeutet, dass er als „beliebiges Zeichen“ und nicht nur als Punkt interpretiert wird. Statt
^(www.)?domain.tld$
Sie benötigen
^(www\.)?domain\.tld$