Generieren Sie URLs mit relativen Pfaden mit schlankem RouterPhp

PHP-Programmierer chatten hier
Anonymous
 Generieren Sie URLs mit relativen Pfaden mit schlankem Router

Post by Anonymous »

Ausgabe < /h1>
Ich habe eine schlanke Anwendung, die in einem Domänen -Unterverzeichnis veröffentlicht wurde ((

Code: Select all

https://example.org/myapp/
) und muss relative URLs verwenden. via: < /p>

Code: Select all

$app->get('/home', HomeAction::class)->setName('home-page');
Http-Request-Umschreiber
Hinweis: Ich habe den Artikel von Akrabat gelesen, in dem ich vorschlägt, Rewritebase zu verwenden, aber das passt nicht zu meinem Gebrauch. Dies verhindert, dass die Webserver-Konfiguration agnostisch des Ingress-Path (auch bekannt als Basepath) ist. Die App sollte mit relativer URL funktionieren). < /p>

Code: Select all

ingress:
className: nginx
annotations:
# rewrite to /path (without /basepath) to make webserver agnostic
nginx.ingress.kubernetes.io/rewrite-target: /$2
hosts:
- host: "example.com"
paths:
- /myapp(/|$)(.*)
- /()(.*)
Aus diesem Grund muss meine Routenerzeugung auch agnostisch sein (daher wird SetBasepath nicht verwendet).

Code: Select all

echo $this->route->getRouteParser()->relativeUrlFor('home-page');
, aber die Ausgabe ist/home (Absolute-Path), während die erwartete Ausgabe zu Hause ist (relativesweg).

Code: Select all

urlFor
Methode funktioniert einwandfrei, wenn die App bei einem Domänenroot direkt zugänglich ist (z. B. https://example.com/).

Aber Diese Referenzen sind falsch, wenn die App bei einem Subdirectory/Subpath (z. /> Beispiel
Die Seite/MyApp/um sollte ein href = "home" anstelle href = "/home" generieren, weil:
[*]

Code: Select all

home
lädt relativ in/myapp/über , ✅ korrekt führt zu /myapp/home.

Code: Select all

/home
lädt relativ in den Host-Root-Pfad/, ❌ fälschlicherweise führt zu/home (außerhalb des App-Namespace). (z. B. URL HOME plus )

tl; dr
slims relativen ()

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post