
Ich habe eine PHP-Webanwendung auf einem Apache-Webserver.
Der Pfad zur Webanwendung auf dem Server lautet:/var/www/html/intern/organisation/example_app
Die URL zur Webanwendung lautet:
https://www.example.de/org1/intern/example_app/
Ich möchte, dass alle Anfragen, z.B. https://www.example.de/org1/intern/example_app/view1/
weitergeleitet werden an
https://www.example.de/org1/intern/example_app/index.php
Auf meinem lokalen XAMPP-Server verwende ich die folgende .htaccess-Datei, die für diesen Zweck funktioniert:
RewriteEngine On
RewriteBase /example_app
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ index.php [L]
Ich habe aber keine Ahnung, wie diese Datei auf dem Server aussehen soll? Ich verwende auch eine httpd.conf auf dem Server. Ich frage mich, ob diese Datei mit der .htaccess
Datei, die unten liegt, in Konflikt steht:/var/www/html/intern/organisation/example_app/
Hat jemand eine Idee, wie das Umschreiben auf dem Server konfiguriert werden kann?
Antwort1
Die .htaccess
Datei im /org1/intern/example_app/
Unterverzeichnis sollte folgendermaßen aussehen:
DirectoryIndex index.php
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
Sie können dann dieselbe .htaccess
Datei lokal und auf dem Live-Server verwenden, vorausgesetzt, sie befindet sich im example_app/
Unterverzeichnis.
Vorausgesetzt, die .htaccess
Datei befindet sich im selben Verzeichnis wie die index.php
Datei, in die Sie umschreiben möchten, brauchen Sie die RewriteBase
Anweisung nicht.
Die Direktive ist wahrscheinlich bereits in der Serverkonfiguration DirectoryIndex
festgelegt , daher ist sie hier möglicherweise nicht erforderlich, der Vollständigkeit halber sollte sie jedoch aufgenommen werden. Sie ist erforderlich, wenn das Anwendungsverzeichnis selbst angefordert wird (z. B. ).index.php
https://www.example.de/org1/intern/example_app/
Beachten Sie, dass dies eine „interne Umleitung“ ist, die häufiger als „Umschreiben“ bezeichnet wird. Wenn Sie einfach „Umleitung“ sagen, bedeutet dies eine „externe (HTTP-)Umleitung“, was etwas völlig anderes ist.
Ich frage mich, ob diese Datei mit dem
.htaccess file
unten stehenden kollidiert:/var/www/html/intern/organisation/example_app/
Mehrere .htaccess
Dateien (und die Serverkonfiguration) können in Konflikt geraten. Allerdings können mod_rewrite-Direktiven in einer untergeordneten Konfiguration (im selbenKontext, dh.Verzeichnis) überschreibt mod_rewrite-Direktiven in der übergeordneten Konfiguration vollständig (standardmäßig).
Beiseite:(oder möglicherweise auch nicht)
Der Pfad zur Webanwendung auf dem Server lautet:
/var/www/html/intern/organisation/example_app
Die URL zur Webanwendung lautet:
https://www.example.de/org1/intern/example_app/
Etwas verwirrend ist allerdings, dass der Dateipfad und der URL-Pfad nicht übereinstimmen. Hast du Alias
in der Serverkonfiguration zusätzliche Umschreibungen oder Konfigurationen vorgenommen oder befindet sich example_app
im Dateipfad ein anderes Verzeichnis als example_app
im URL-Pfad?
Antwort2
Vielen Dank für die ausführlichen Antworten. Die Rewriting Rules waren nicht das Problem.
Das Problem war einfach. Die ganze .htaccess funktionierte nicht, weil ich AllowOveride in der httpd.conf aktivieren musste.