Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z RewriteRule
Forum PHP.pl > Forum > Serwery WWW > Apache
Jarod
Oto zawartość mojego .htaccess:
Kod
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php?$1 [L]


Jeśli wpiszę w pasku adresu np adres:
Cytat

i jeśli plik index.php istnieje zostanie załadowany.

Jeśli wpiszę w pasku adresu np adres:
Cytat

i jeśli plik main.php istnieje zostanie załadowany ALE jeśli nie istnieje to zostanie załadowany index.php

Domyślam się, że problem leży w tej części:
Cytat
RewriteRule (.*) index.php?$1 [L]

ale nie wiem czym zastąpić index tak, żeby pobierał nazwę wpisanego pliku, tzn, jeśli wywołuję plik main.php i on nie istnieje to niech wywali komunikat "Podana strona nie została odnaleziona etc"

Proszę o pomoc.
envp
może poprostu :

RewriteRule (.*) error404.php?$1 [L]

co spowoduje przekierowanie nie istniejącego na adres błędu smile.gif
Jarod
@envp: działa thx.
Znalazłem jeszcze jednego gotowca, który też działa
Cytat
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^.]*)$ index.php?$1 [L]



Mam jeszcze prośbę o wytłumaczenie każdego z opisów:
Cytat
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php?$1 [L]

Opisy RewriteCond i RewriteRule znalazłem sobie ale nie wiem co robią te konkretne przykłady.
Łukasz O.
  1. <?php
  2. RewriteCond %{REQUEST_FILENAME} !-f  # jeśli wywołany adres nie jest rzeczywistym plikiem
  3. RewriteCond %{REQUEST_FILENAME} !-d  # oraz jeśli wywołany adres nie jest rzeczywistym katalogiem
  4. RewriteRule ^([^.]*)$ index.php?$1 [L] # przekieruj wszystko na index.php
  5. ?>
Jarod
@Łukasz O.: thx. już teraz wszystko jasne.

pzdr



EDIT: Mam jeszcze jedno pytanie. Co należy dopisać do tej zawartości
Kod
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) error404.php?$1 [L]


aby można było wpisywać http://adres_serwera/main zamiast http://adres_serwera/main.php ?
Łukasz O.
RewriteEngine On
RewriteCond %{REQUEST_FILENAME}(\.php) -f
RewriteRule (.*) $1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) info.php?$1 [L]
Jarod
Niestety nie działa, tzn jak wpiszę adres http://adres_serwera/main.php to ładowany jest plik main.php. Natomiast jak wpisze http://adres_serwera/main to odpalany jest plik info.php.

Próbowałem różne sposoby, ale lipa.

Czy ktoś ma inny pomysł?

EDIT: Przeglądnąłem dzisiaj mnóstwo informacji/sposobów/etc i jedynym wyjście to zastosować
ForceType application/x-httpd-php

pozdrawiam
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.