Externe Umschreiberegeln sind fantastisch. Mit ihnen können Sie Umschreibungen definieren, die nicht unbedingt über WordPress laufen index.php
. Dies bedeutet, dass Sie beliebige Regeln beliebigen Dateien zuordnen können, z.
$wp_rewrite->add_external_rule( '^somethingrandom/?$', 'wp-content/wp-uploads/hiddendirectory/somefile.php' );
Dann, um jede Anfrage http://site.url/somethingrandom/
wird tatsächlich eine statische PHP - Datei aus einem anderen Verzeichnis bedient werden. Das ist erstaunlich und ermöglicht es Ihnen, alle möglichen raffinierten Dinge zu erledigen.
Aber es funktioniert nur mit Apache.
Die add_external_rule()
Methode schreibt ihre registrierten Regeln an .htaccess
. Da Nginx keine .htaccess
Datei verwendet, werden externe Regeln von diesem Server vollständig ignoriert. Was ich brauche, ist eine serverunabhängige Möglichkeit, Regeln wie die oben beschriebene programmgesteuert zu registrieren. Irgendwelche Ideen?
quelle
.htaccess
scheint eine schlechte Idee zu sein, WordPress das Schreiben in Serverkonfigurationsdateien (auch in ) zu erlauben . Ich denke also nicht, dassadd_external_rule
es wirklich sinnvoll ist, sich darauf zu verlassen, zumal es vom Webserver abhängt - ich möchte nicht einmal darüber nachdenken, wie man esadd_external_rule
für IIS implementieren würde .Antworten:
Dies setzt auch voraus, dass .htaccess-Dateien in Apache aktiviert sind, das sich fast immer im Shared Hosting befindet, in Unternehmensumgebungen jedoch häufig deaktiviert ist. Eine Möglichkeit, dies zu erreichen, besteht darin, eine eigene Funktion add_external_nginx_rule zu schreiben, die Weiterleitungen in eine Datei schreibt (könnte sogar .htaccess verwenden, obwohl dies verwirrend sein könnte - es sollte sich um eine versteckte Datei handeln, die mit beginnt, egal was passiert), die Sie dann einschließen in Ihrem Nginx Server Block wie
In Ihrer Funktion würden Sie Weiterleitungen im Nginx-Format schreiben, das in vielen Fällen fast dem Apache-Format entspricht. Dies ist wahrscheinlich etwas, das Sie sogar in ein Plugin verwandeln könnten. Es erfordert eine spezielle Konfiguration in Ihrer Nginx-Konfigurationsdatei, aber für die Verwendung von .htaccess in Apache muss diese auch in der Apache-Konfigurationsdatei aktiviert sein, sodass Sie argumentieren können, dass es sich um dasselbe Konzept handelt.
Hinweis: Ich habe nichts davon ausprobiert, sehe aber keinen Grund, warum dies nicht funktionieren würde. Wäre es wert, erkundet zu werden.
Update: Mark ist in den Kommentaren richtig - dies würde nicht funktionieren, da Nginx Konfigurationsdateien nur beim ersten Start oder beim erneuten Laden liest. Daher müssen Sie Nginx bei jeder Änderung neu starten, was diese Lösung aus Sicherheitsgründen problematisch macht.
quelle