Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: .htaccess - przyjazne URL
Forum PHP.pl > Forum > Serwery WWW > Apache
klorko
Witam,
Wiem, że temat był wałkowany wiele razy na forum, ale nie mogę znaleźć rozwiązania mojego problemu.

Przykładowy link z mojej strony to: http://www.mojadomena.pl/index.php?id_ks=6
Chciałbym żeby adres docelowy wyglądał tak: http://www.mojadomena.pl/strona-6.html

Na tą chwilę sytuacja wygląda tak, że mogę się odnieść do strony poprzez wpisanie http://www.mojadomena.pl/strona-6.html, ale chcę żeby było tak, że jeśli ktoś wpisze adres http://www.mojadomena.pl/index.php?id_ks=6 to w pasku adresu przeglądarki będzie wyświetlony przyjazny adres. Czy jest to możliwe? Dodam, że w moim pliku .htaccess mam na końcu regułę, która dodaje www. na początku adresu.

Mój plik .htaccess wygląda tak:
Options -Indexes

DirectoryIndex index.html index.php

Options FollowSymLinks
RewriteEngine on

RewriteRule ^strona-([^-]+).html$ index.php?id_ks=$1 [NC]

# Przekierowanie 301 do adresu z 'www'
RewriteCond %{HTTP_HOST} ^mojadomena.pl$ [NC]
RewriteRule ^(.*)$ http://www.mojadomena.pl/$1 [L,R=301]
jaslanin
spróbuj wstawić taką regułkę:

Kod
RewriteCond %{THE_REQUEST} ^.*index.php
RewriteCond %{QUERY_STRING} id_ks=([0-9]+)$
RewriteRule ^index.php(.*)$ strona-%1.html? [R=301,L]
klorko
Jesteś wielki jaslanin!
Działa tak jak chciałem, serdeczne dzięki!
Zastanawiam się jak działają te warunki, które miałem dodać, bo konfiguracja Apache przez .htaccess na razie sprawia mi sporą trudność. Muszę sobie jeszcze sporo o tym doczytać.
Pozdrawiam

A co mogę zrobić jak przy innej stronie z taką samą konfiguracją (ta strona jest na innym hostingu), z tym samym plikiem .htaccess wywala mi taki błąd?

Forbidden

You don't have permission to access /index.php on this server.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
thek
To znaczy że masz problem z prawami dostępu na tym hostingu, a 404 wykryło gdyż nie masz domyślnego pliku, który miałby obsłużyć zgłoszenie błędu.
jaslanin
ciężko powiedzieć, typowym błędem jaki wyskakuje jeżeli jest błąd z mod_rewrite to 500, a nie forbidden.

jeżeli warunki na nowym hostingu są takie same tzn. URL wygląda mniej więcej tak:

domena.pl/strona-6.html

to powinno to działać niezależnie od hostingu, trzeba więc poprosić o wyjaśnienie firmę hostingową, że na innym hostingu działa, a tutaj nie działa. W końcu jak się płaci to się wymaga.

Chyba że coś się zmieniło w URL'u np. teraz wyglądają mniej więcej tak:

domena.pl/subfolder/strona-6.html

wtedy trzeba odpowiednio zmodyfikować RewriteBase

Ale to tylko takie przewidywanie bo różnie może być.
klorko
Od pomocy technicznej w firmie Netmark za dużo się niestety nie dowiedziałem. Twierdzą, że firma Home.pl ma tylko emulowanie mod_rewrite, bo korzystają z jakiejś swojej wersji autorskiej, przerobionego Apache i stąd różnice w interpretowaniu .htaccess. Szczerze mówiąc - nie do końca w to wierzę. Na serwerze Home nie mam problemów z tym plikiem a w Netmark miałem.

W końcu po wielu próbach doszedłem, że dopisanie RewriteBase / załatwia sprawę.

Przy okazji mam dodatkowe pytanie. Niektóre pliki na mojej stronie mają postać map_doj.php (nie są generowane automatycznie). Chciałbym zamienić ich rozszerzenia w pasku adresu z .php na .html. Czy możecie mi pomóc co mam dopisać do mojego pliku? Jestem teraz chyba bardziej zakręcony jeżeli chodzi o plik .htaccess niż wcześniej.

Mój obecny plik .htaccess poniżej:

Options -Indexes
Options +FollowSymLinks

DirectoryIndex index.php

RewriteEngine on

# Zmiana bazowego katalogu
RewriteBase /

# Generowanie przyjaznych adresów URL
RewriteCond %{THE_REQUEST} ^.*index.php
RewriteCond %{QUERY_STRING} id_ks=([0-9]+)$
RewriteRule ^index.php(.*)$ strona-%1.html? [L,R=301]
RewriteRule ^strona-([^-]+).html$ index.php?id_ks=$1 [NC]

# Przekierowanie 301 do adresu z 'www'
RewriteCond %{HTTP_HOST} ^moja-strona.pl$ [NC]
RewriteRule ^(.*)$ http://www.moja-strona.pl/$1 [L,R=301]
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.