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? :) |
|
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. |
|
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. |
|
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. |
|
kamillo121 |
» 2011-08-12 14:36:53 Zmieniasz typ przekierowania na R=301 |
|
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] ? |
|
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. |
|
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 :) |
|
« 1 » |