Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[xampp, localhost] .htaccess i przyjazne linki

Ostatnio zmodyfikowano 2011-08-12 18:19
Autor Wiadomość
malan
Temat założony przez niniejszego użytkownika
[xampp, localhost] .htaccess i przyjazne linki
» 2011-08-12 03:00:02
Witam, witam :)

Do rzeczy.
http://mysite.pl/s=projekty&id=69
Powyższy link NIE jest przyjazny. Żeby był przyjazny musiałby wyglądać (np.) tak:
http://mysite.pl/projekty/69
Żeby z nieprzyjaznego linku zrobić link przyjazny trzeba napisać kilka reguł w pliku .htaccess.
Cały problem polega na tym, że mój localhost chyba tych reguł nie widzi ;p

Plik .httpd.conf:
LoadModule rewrite_module modules/mod_rewrite.so
//...
DocumentRoot "D:/Programy/xampp/htdocs"
//...
<Directory "D:/Programy/xampp/htdocs">
    Options Indexes FollowSymLinks Includes ExecCGI
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

Skrypt uruchamiam z katalogu:
D:/Programy/xampp/htdocs/mysite/Debug/_Bin

Przykład (z home.pl):
RewriteEngine On
RewriteRule ^sklep/([0-9][0-9])/$ sklep.php?id=$1
D:/Programy/xampp/htdocs/mysite/Debug/_Bin/
--.htaccess
--sklep.php

Po wpisaniu adresu:
localhost/mysite/Debug/_Bin/sklep.php?id=69
 nic się nie dzieję - pasek adresu w przeglądarce pozostaje bez zmian.

localhost/mysite/Debug/_Bin/sklep/69/
 - Error 404

Przekopałem google od góry do dołu i nie mam pojęcia co jest nie tak. Ogólnie rzecz biorąc to serwer widzi .htaccess - sprawdzałem. Chyba tylko reguł się boi ;p

Pytanie: Co przeoczyłem? :)
P-38912
F90M
» 2011-08-12 04:41:13
RewriteRule ^sklep/([0-9][0-9])/$ sklep.php?id=$1
Nie powinno być przypadkiem jeszcze jednego slasha
RewriteRule ^sklep/([0-9][0-9])/$ /sklep.php?id=$1


Po wpisaniu adresu:
localhost/mysite/Debug/_Bin/sklep.php?id=69
 nic się nie dzieję - pasek adresu w przeglądarce pozostaje bez zmian.
Przekierowujesz przykładowo z
localhost/sklep/10/
 na
localhost/sklep.php?id=10
, a nie odwrotnie, dlatego nic się nie dzieje. Adres pozostaje bez zmian bo przekierowanie jest niejawne, wpisując
localhost/sklep/10/
 tak naprawdę łączysz się z
localhost/sklep.php?id=10
, a adres w przeglądarce pozostaje bez zmian.
P-38913
kamillo121
» 2011-08-12 12:38:46
@UP nie może być / przy drugiej części formuły w tym wypadku...
Dodaj na końcu formuły typ przekierowania np:
RewriteRule ^sklep/([0-9][0-9])/$ sklep.php?id=$1 [L]

albo zmień to najlepiej na:
RewriteRule ^sklep/([0-9]+)/?$ sklep.php?id=$1 [L]
bo wtedy gdy użytkownik wpisze id jedno cyfrowe też przekieruje i niekoniecznie ze znakiem / na końcu linku.
P-38950
malan
Temat założony przez niniejszego użytkownika
» 2011-08-12 14:06:58
@F90M: Slash nie pomógł, ale dzięki za chęci :)
@kamillo121: Twój sposób zadziałał. Po wpisaniu w przeglądarkę
/sklep/69
 odbieram to jako
sklep.php?id=69
 i nie występuje już 404. Dzięki :)

Teraz tak. Jeżeli użytkownik wpisze:
/sklep/69
 to odbieram to jako
sklep.php?id=69
. Ok.
Czy da się tak zrobić, aby po wpisaniu przez użytkownika
/sklep.php?id=69
, w przeglądarce (na pasku adresu) pojawił się adres
/sklep/69
, a ja bym to odbierał jako
sklep.php?id=69
?

P.S. Wiem, że mam braki, a to są podstawy.
P-38957
kamillo121
» 2011-08-12 14:36:53
Zmieniasz typ przekierowania na R=301
P-38963
malan
Temat założony przez niniejszego użytkownika
» 2011-08-12 15:11:53
RewriteRule testfile.php?id=$1 ^sklep/([0-9]+)/?$ [R=301]
?
P-38969
kamillo121
» 2011-08-12 17:07:24
Przepraszam, mój błąd. Powyższy sposób nie zadziała ale nawet gdybyś zrobił to poprawnie to byłaby pętla przekierowań(ze zwykłego do przyjaznego z przyjaznego do zwykłego i tak w kółko).
Taki efekt możesz uzyskać po przez przekierowanie wszystkich żądań(prócz np żądań do pliku css,js) do pliku index.php i tam sprawdzać czy jest to link przyjazny czy nie. Jeżeli nieprzyjazny przekierowujesz na przyjazny typem 301 ale już przez php a jak przyjazny to puszczasz.
P-38984
malan
Temat założony przez niniejszego użytkownika
» 2011-08-12 18:19:17
Od kilku dni staram się znaleźć rozwiązanie, a tu się okazuje, że to się robi za pomocą PHP :]
Hm, coś mi się obiło o uszy o pętli przekierowań, ale zapewne dotyczyło to innego problemu i przeszedłem dalej.

Dzięki wielkie :)
P-38990
« 1 »
  Strona 1 z 1