Lepší detekce requestUri a scriptPath

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
pawell
Člen | 3
+
0
-

Ahoj,
v HttpRequestFactory::createHttpRequest() se pomocí některých položek ze $_SERVER detekují requestUri a scriptPath. U mě však detekce scriptPath selhává, neboť $_SERVER[‚SCRIPT_NAME‘] == $_SERVER[‚REQUEST_URI‘], ač by jeden předpokládal, že bude $_SERVER[‚SCRIPT_NAME‘] == ‚/index.php‘

Detekce ze ZF mi funguje
https://github.com/…est/Http.php#L467

David Grudl
Nette Core | 8082
+
0
-

Pošli prosím víc informací. Jaký máš server, na jaké URL přistupuješ a jaké jsou hodnoty v poli $_SERVER.

pawell
Člen | 3
+
0
-

Pošli prosím víc informací.

Rewrite v apachovi (v configu) přesměrovává vše, co neexistuje, na index.php. Při přístupu na neexistující cestu, se sice správně spustí daný index.php, ale SCRIPT_NAME na něj neukazuje.

[SCRIPT_URL] ⇒ /sign/in/
[SCRIPT_URI] ⇒ http://nejaka.domena.cz/sign/in/
[SERVER_SOFTWARE] ⇒ Apache/2.2.16 (Win32) PHP/5.3.3
[DOCUMENT_ROOT] ⇒ nejaka/cesta/www
[SCRIPT_FILENAME] ⇒ nejaka/cesta/www/index.php
[REQUEST_URI] ⇒ /sign/in/
[SCRIPT_NAME] ⇒ /sign/in/
[PHP_SELF] ⇒ /sign/in/

Z tohoto důvodu se scriptPath nastaví na /sign/in/ a requestUri na / což není správně :(

V Zendu tam proto IMHO je ta detekce basename($_SERVER[‚SCRIPT_NAME‘]) == basename($_SERVER[‚SCRIPT_FILENAME‘]) a jinak se to zpětně určí z toho $_SERVER[‚SCRIPT_FILENAME‘].

Filip Procházka
Moderator | 4668
+
0
-

ale to už přece funguje, ne ? https://github.com/…99c186ec1865

Editoval HosipLan (26. 11. 2010 18:08)

pawell
Člen | 3
+
0
-

Davide díky,
v nightly verzi to už funguje.