Meine Hauptdomäne ist an meine public_html-Ordner gebunden, aber ich benutze eine. Htaccess Redirect, um das Stammverzeichnis in ein Unterverzeichnis im Ordner zu ändern, um es einfacher zu machen, mehrere Standorte zu hosten. Beispiel:. Htaccess Redirect Unterverzeichnis zu Root-Problem
public_html
-- .htaccess
-- site1
---- .htaccess
-- site2
-- site3
Die .htaccess-Datei im Stammverzeichnis wird wie folgt:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteCond %{REQUEST_URI} !^/subdirectory/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /subdirectory/$1
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteRule ^(/)?$ subdirectory/ [L]
Dies funktioniert gut, aber ich denke, es gibt Probleme mit diesem und der .htaccess-Datei in meinem site1 Verzeichnis. Wenn ich die URL eingabe, wird sie manchmal an example.com/site1 weitergeleitet. Daher erscheint die Website auf example.com und example.com/site1 genauso, aber ich möchte nicht, dass sie als example.com/site1 angezeigt wird. Die zweite .htaccess-Datei im Verzeichnis site1 wird unten angezeigt.
RewriteEngine on
# Change default directory page
DirectoryIndex /home/
# Remove .php extension
RewriteCond %{THE_REQUEST} ^GET\ /[^?\s]+\.php
RewriteRule (.*)\.php$ /$1/ [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^/(.+)/$
RewriteCond %{DOCUMENT_ROOT}/%1.php -f
RewriteRule ^(.*)/$ $1.php [L]
# Ensure all directory URLs have a trailing slash
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !\/$
RewriteCond %{REQUEST_URI} !\/[^\/]*\.[^\/]+$
RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI}/ [L,R=301]
# Same for HTTPS
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !\/$
RewriteCond %{REQUEST_URI} !\/[^\/]*\.[^\/]+$
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI}/ [L,R=301]
# Redirect default error page to home page
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^(/|error/)?$ /home/ [R=301,L]
# Error Documents
ErrorDocument 400 /error/?e=400
ErrorDocument 401 /error/?e=401
ErrorDocument 403 /error/?e=403
ErrorDocument 404 /error/?e=404
ErrorDocument 500 /error/?e=500
# Prevent viewing of htaccess file
<Files .htaccess>
order allow,deny
deny from all
</Files>
Ich bin mir nicht sicher, ob es ein Problem mit den verschiedenen Regeln für das Umschreiben ist verwende ich, dass die URL beeinflusst, aber ich würde jede Hilfe dankbar, wenn sie gelöst werden können.
Vielen Dank im Voraus und ich entschuldige mich, wenn meine Beschreibung nicht großartig ist.
Vielen Dank für Ihre Antwort! Wenn Ihre Änderungen aktiviert sind, wenn ich die URL example.com/home besuche und den abschließenden Schrägstrich absichtlich weggebe, wird der Standort aufgrund von zu vielen Weiterleitungen nicht geladen, anstatt den abschließenden Schrägstrich zu enthalten. Es kann hilfreich hinzufügen Ich habe ein Unterverzeichnis innerhalb des site1 Ordner für die Website Vermögenswerte mit einer .htaccess-Datei enthält: 'Optionen -Indexes RewriteEngine On RewriteBase/ # Disallow Verzeichniszugriff IndexIgnore *' und Das Problem tritt meist auf, wenn der nachgestellte Schrägstrich im Ordner "Assets" weggelassen wird. – JakeGriffin
Entschuldigung, im ersten Block wurde ein Schrägstrich hinzugefügt. –
Danke Vasiliy, das funktioniert für die Seiten im Hauptverzeichnis! Allerdings habe ich oben ein Asset-Unterverzeichnis mit einer .htaccess-Datei, die den Zugriff blockiert. Wenn ich zu example.com/assets/ navigiere, funktioniert es gut, aber wenn ich den abschließenden Schrägstrich weglasse, wird es zu example.com/site1/assets/ umgeleitet. Wie kann das gelöst werden? – JakeGriffin