Subdomain funktioniert nicht ohne www davor

Subdomain funktioniert nicht ohne www davor

Ich hatte vorher eine Subdomain in cpanel eingerichtet (sub.domain.com zur Weiterleitung auf domain.com/sub/) und heute plötzlich bemerkte ich, dass die URL im Browser in www.domain.com/sub/ umgeschrieben wurde, anstatt sie einfach als sub.domain.com zu belassen. Ich war mir nicht sicher, wo das Problem lag, entschied mich aber, meine Subdomain zu löschen und sie in cpanel neu zu erstellen. Jetzt kann ich nur noch darauf zugreifen, indem ich zu www.sub.domain.com gehe (sub.domain.com ergibt einen Server-nicht-gefunden-Fehler).

EDIT: Das Problem scheint an der .htaccess-Datei zu liegen. Nachdem ich sie gelöscht hatte, war alles wieder in Ordnung. Jetzt ist mein neues Problem jedoch, wie ich die .htaccess-Datei richtig konfigurieren kann. Ich hatte sie ursprünglich optimiert, um Folgendes zu erreichen:

Ich habe drei Ordner: „Live“, „Staging“ und „Dev“:

1) Anfragen für domain.com oder www.domain.com werden an domain.com/live weitergeleitet (und die URL, die der Benutzer sieht, wird immer in www.domain.com umgeschrieben).

2) Anfragen für staging.domain.com und dev.domain.com werden an domain.com/staging bzw. domain.com/dev weitergeleitet, und der Benutzer sieht staging.domain.com oder dev.domain.com im Browser.

3) Subdomains werden grundsätzlich nicht vom Browser umgeschrieben, wenn ich sie im cPanel hinzufüge.

Meine aktuelle .htaccess-Datei erfüllt Nummer 1 problemlos, schreibt aber staging.domain.com in www.domain.com/staging usw. um.

RewriteCond %{HTTP_HOST} !^www\.domain\.com$
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]
RewriteRule ^$ /index.html

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !\..+$
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://www.domain.com/$1/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/live/
RewriteRule ^(.*)$ /live/$1

Antwort1

Ich habe die Logik meines ursprünglichen Codes optimiert und scheine eine praktikable Lösung zu haben. Jeder Test, den ich durchgeführt habe, war erfolgreich. Wenn jemand Fehler im Code sieht oder weiß, wie er optimiert werden könnte, um den in der ursprünglichen Frage gestellten Bedingungen zu entsprechen, melden Sie sich bitte. Ich habe wenig Erfahrung mit Umschreibungen. Danke.

Funktionierender Code:

# REDIRECTS
#
# Add www in front of all URLs except subdomains
#
RewriteCond %{HTTP_HOST} ^domain\.com$
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]
RewriteRule ^$ /index.html
#
# Add forward slash at end of www URLs
#
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.domain\.com$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !\..+$
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://www.domain.com/$1/ [R=301,L]
#
# Forward requests to live folder
#
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/live/
RewriteRule ^(.*)$ /live/$1

*Hinweis: Ich bin nicht sicher, warum der letzte Teil des Codes Subdomain-URLs nicht in einen Live-Ordner umleitet. Es funktioniert so, wie ich es möchte, ich bin mir nur nicht sicher, warum ^_^;

verwandte Informationen