![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 375 Pomógł: 20 Dołączył: 28.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
Jedną z metod na przyjazne URL-e jest wykorzystanie PATH_INFO.
W przeciwieństwie do mod_rewrite problem ze ścieżkami pojawia się także w PHP. ![]() Na początku zawsze tworzę pełny adres URL oraz ścieżkę: Kod define('PATH', str_replace('//','/',dirname($_SERVER['PHP_SELF']).'/')); define('URL', 'http://'.$_SERVER['SERVER_NAME'].PATH); Stała URL przechowuje pełną ścieżkę do serwisu. Po co jeszcze tworzę stałą PATH i dołączam ją do URL? Niektóre serwisy znajdują się w podkatalogu, np. na localhost lub na darmowych hostingach bez subdomen. Gdzie stosuję stałą URL? Na przykład przy przekierowaniach Location. Specyfikacja HTTP 1.1 każe podawać pełną ścieżkę, lecz przeglądarki przekierują także do adresu względnego. Wolę jednak trzymać się standardów - słusznie? ![]() Poniżej przedstawiam wartości pewnych elementów $_SERVER dla adresu: /index.php/art/1 Przykład 1 - mod_rewrite PHP_SELF: /sciezka/CMS/index.php dirname(PHP_SELF) ? PATH: /sciezka/CMS Tutaj wszystko poprawnie. Przykład 2 - PATH_INFO (bez mod_rewrite) PHP_SELF: /sciezka/CMS/index.php/art/1 dirname(PHP_SELF) ? PATH: /sciezka/CMS/index.php/art Jak sobie z tym próbuję poradzić? Kod $_SERVER['PHP_SELF'] = strstr($_SERVER['PHP_SELF'], 'index.php', 1); Wszystko dobrze - /sciezka/CMS/ - ale: dirname(PHP_SELF) wynosi: /sciezka zamiast /sciezka/CMS Dlaczego funkcja ucina wartość "/CMS/"? Dobrze, przecież mogę równie dobrze wyciąć ze ścieżki fragment: Kod 'index.php/' . $_SERVER['PATH_INFO'] Jednak nie chcę nic przekombinować. 1) Czy modyfikować PHP_SELF tak, aby zawierał tylko /sciezka/CMS/? Czy to się nie opłaca? 2) Są lepsze sposoby na uzyskanie prawidłowej ścieżki? Bez zbędnych operacji, aby nie spowalniać skryptu. 3) Czy $_SERVER['SCRIPT_NAME'] działa także na innych serwerach niż Apache? Ten post edytował WebCM 24.12.2009, 22:44:29 -------------------- „Jesteśmy różni, pochodzimy z różnych stron Polski, mamy różne zainteresowania, ale łączy nas jeden cel. Cel ten to Ojczyna, dla której chcemy żyć i pracować.” Roman Dmowski
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 10:58 |