Hallo zusammen,
angenommen, ich möchte eine Web-Anwendung in einem Shared-Webhosting-Paket betreiben, wo ich keine Änderung am DocumentRoot des Apache-Webservers vornehmen kann.
Wenn die Webanwendung so konstruiert ist, dass der Einstiegspunkt im Verzeichnis
1.
2. in der URL dürfte nicht
3. ein expliziter Aufruf von
Hat jemand eine Idee, wie man das mittels .htaccess Rewrites umsetzen könnte?
Mein aktueller Stand sieht folgendermaßen aus:
1. Die folgende .htaccess-Konfiguration im DocumentRoot-Verzeichnis sorgt für die Auslieferung vom public-Verzeichnis unter der Domain example.com:
2. Dies ist die .htaccess-Konfiguration im public-Verzeichnis, welche die korrekte Auslieferung der Web-Anwendung über den Front-Controller sicherstellt:
Die aktuelle Problematik ist vor allen Dingen noch, dass die Anwendung sowohl unter
Schon mal vielen Dank im Voraus für eure Tricks und Tipps zum Umgang mit dieser Situation. Es wäre toll, wenn sich eine passende .htaccess-Konfiguration finden würde.
Viele Grüße
Jasper
angenommen, ich möchte eine Web-Anwendung in einem Shared-Webhosting-Paket betreiben, wo ich keine Änderung am DocumentRoot des Apache-Webservers vornehmen kann.
Wenn die Webanwendung so konstruiert ist, dass der Einstiegspunkt im Verzeichnis
/public_html/public
liegt, der DocumentRoot standardmäßig allerdings für das Verzeichnis /public_html
konfiguriert wurde, stehe ich vor der Herausforderung, dass ich nach folgendem Prinzip mittels .htaccess URL-Rewrites erstellen müsste:1.
example.com/
müsste example.com/public
ausliefern2. in der URL dürfte nicht
example.com/public
, sondern example.com/
stehen3. ein expliziter Aufruf von
example.com/public
müsste example.com/public
ausliefern, jedoch example.com/
als URL anzeigen (keine doppelte Verfügbarkeit unter example.com/
als auch example.com/public
)Hat jemand eine Idee, wie man das mittels .htaccess Rewrites umsetzen könnte?
Mein aktueller Stand sieht folgendermaßen aus:
1. Die folgende .htaccess-Konfiguration im DocumentRoot-Verzeichnis sorgt für die Auslieferung vom public-Verzeichnis unter der Domain example.com:
/public_html/.htaccess:
RewriteEngine on
RewriteCond %{REQUEST_URI} !^public
RewriteRule ^(.*)$ public/$1 [L]
2. Dies ist die .htaccess-Konfiguration im public-Verzeichnis, welche die korrekte Auslieferung der Web-Anwendung über den Front-Controller sicherstellt:
/public_html/public/.htaccess:
DirectoryIndex index.php
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
RewriteRule ^(.*) - [E=BASE:%1]
# Sets the HTTP_AUTHORIZATION header removed by Apache
RewriteCond %{HTTP:Authorization} .
RewriteRule ^ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^index\.php(?:/(.*)|$) %{ENV:BASE}/$1 [R=301,L]
# If the requested filename exists, simply serve it.
# We only want to let Apache serve files and not directories.
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]
# Rewrite all other queries to the front controller.
RewriteRule ^ %{ENV:BASE}/index.php [L]
</IfModule>
<IfModule !mod_rewrite.c>
<IfModule mod_alias.c>
RedirectMatch 302 ^/$ /index.php/
</IfModule>
</IfModule>
Die aktuelle Problematik ist vor allen Dingen noch, dass die Anwendung sowohl unter
example.com/public
als auch unter example.com/
ausgeliefert wird. Dies würde natürlich zu einer doppelten Indexierung und Duplicate Content führen, weswegen das so nicht akzeptabel ist.Schon mal vielen Dank im Voraus für eure Tricks und Tipps zum Umgang mit dieser Situation. Es wäre toll, wenn sich eine passende .htaccess-Konfiguration finden würde.
Viele Grüße
Jasper