[APACHE] mod_rewrite - nie dzialaja regulki

0

Witam !!!

Mam stronę: www.strona.pl

Tworzyłem w php więc moje linki menu maja wyglad: www.strona.pl/index.php?p=nazwa_strony

No i oczywiście postanowiłem przy pomocy mod_rewrite poprawić tę niedogodność i utworzyłem .htaccess z regułami:

Options FollowSymLinks
php_flag session.use_trans_sid off

RewriteEngine on
RewriteRule ^/(.*)$ /index.php?p=$1 [L]

No cóż pomyślałem, że teraz czas pozmieniać moje linki w menu na następujące: www.strona.pl/nazwa_strony

Pomyliłem się ?? Dostaję komunikat:

Not Found
The requested URL /nazwa_strony was not found on this server.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.

a jestem pewny, że taka strona istnieje.

Hmmm, gdzie jest błąd?

0

Nie lepiej użyć z 4p?
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-s [NC]
RewriteCond %{REQUEST_FILENAME} !-d [NC]
RewriteRule ^(.+) ogladaj.php?p=$1 [L]
Lub path info jak tu
RewriteRule ^(.+) index.php/$1 [L]

0

osobiście preferuję (od niedawna) bezpośrednie wiązanie w styluRewriteRule ^podstrona.html$ /index.php?str=podstrona

więcej pisania, ale linki dużo bardziej elastyczne :)

0

Regulka jest ok wiec moze sprawdz ustawienia apacha.

0
bordeux napisał(a)

Nie lepiej użyć z 4p?
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-s [NC]
RewriteCond %{REQUEST_FILENAME} !-d [NC]
RewriteRule ^(.+) ogladaj.php?p=$1 [L]
Lub path info jak tu
RewriteRule ^(.+) index.php/$1 [L]

To działa wyśmienicie. Nie wiem jeszcze dlaczego - ale przetestuję.
Dzięki.

0

Być może dlatego, że ta regułka próbowała też przepisać index.php na /index.php?p=index.php, co z kolei próbowało być przepisane na /index.php?p=index.php?p=index.php itd.

Kluczowe są linijki z RewriteCond

0
RewriteEngine on
Options +FollowSymlinks

#RewriteBase /~moja_strona/  TA REGUŁKA TYLKO DLA KRASNALA

RewriteCond %{REQUEST_FILENAME} !-s [NC]
RewriteCond %{REQUEST_FILENAME} !-d [NC]

RewriteRule ^(.+)/(.+)/(.+)$ index.php?p=$1&o=$2&lang=$3 [L,NC,NS]
RewriteRule ^(.+)/(.+)$ index.php?p=$1&o=$2 [L,NC,NS]
RewriteRule ^(.+)$ index.php?p=$1 [L,NC,NS,QSA]

Kontynuując watek:

Zostałem zmuszony do napisania kolejnych linijek i ...
oczywiście nie działa.

Co nie działa? Strona się otwiera jednak gubi scieżki do stylow i obrazkow (otwiera sie biala strona z tekstem). hmmm nie wiem dlaczego, skoro z ostatnią linijką działa prawidłowo ?

0

Dodaj jeszcze
RewriteCond %{REQUEST_FILENAME} !-f [NC]

0

Powiem szczerze, że wszystko nie tak.

W sumie od nie dawna zacząłem zajmować się tym problemem. Szukam dobrej publikacji na ten temat.

A co do problemu.

Tak już myślę, że może popełniam jakiś błąd w kodzie strony?
Może piszę mała a nie dużą literą :] ?

Już nie wiem. Będę testował różne wersje wpisów.

A może problemem jest z względnymi ścieżkami typu: <a href="podstrona1">Podstrona 1</a> zamiast <a href="http://strona.pl/podstrona1">Podstrona 1</a>

co o tym myślicie ?

1 użytkowników online, w tym zalogowanych: 0, gości: 1