![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 358 Pomógł: 0 Dołączył: 19.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
Używam mod_rewrite do przyjaznych linków na swojej stronie, ale mam mały problem ponieważ wprowadziłem paginację wyników z bazy i nie wiem za bardzo jak mam się teraz odwołać do konkretnej strony w paginacji.
Mam np. taki url: nazwa_strony.pl/artykuly/ I na tej podstronie wyświetlam wyniki z bazy, żeby przejść do następnej strony wyników muszę dodać parametr "p" do urla, ale jak dodam taki: nazwa_strony.pl/artykuly/?p=3 to dalej pokazuje mi się strona 1, tak jakby nie czytało tego parametru... Jak to ugryźć w htaccess? dodam, że nie chcę robić artykuly/1 itd., a raczej nie mogę, bo po wejściu w jakiś artykuł mam coś takiego w urlu: artykuly/nazwa-artykulu/ A jak dam artykuly/1 to skrypt nie będzie wiedział czy to strona paginacji czy podstrona z artem ;/ Ten post edytował d.stp 20.04.2013, 21:44:57 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 728 Pomógł: 76 Dołączył: 12.06.2009 Ostrzeżenie: (0%) ![]() ![]() |
1. Czy twoja paginacja działa poprawnie a jeśli tak to jak wyglądają generowane URL-e ?
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 358 Pomógł: 0 Dołączył: 19.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
Działa poprawnie, bo jak wchodzę normalnie bez mod_rewrite czyli bezpośrednio index.php?page=artykuly&p=1/2/3.. lub index.php?page=artykuly&id=nazwa-arta to wszystko działa tak jak powinno.
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 728 Pomógł: 76 Dołączył: 12.06.2009 Ostrzeżenie: (0%) ![]() ![]() |
RewriteRule ^artykuly/([0-9]+)$ index.php?page=artykuly&p=$1 [L,NC]
RewriteRule ^artykuly/?$ index.php?page=artykuly [L,NC] No i wpisujesz linki: nazwa_strony.pl/artykuly/ nazwa_strony.pl/artykuly/(0-9) Jeśli regułki będą ułożone od szczegółu do ogółu to pierwszą będzie łapał dla linków z parametrem paginacji, jeśli takiej nie znajdzie to ewentualnie chwyci drugą. EDIT: możesz jeszcze dopisać flagi L dla zwiększenia wydajności (IMG:style_emoticons/default/smile.gif) Ten post edytował amii 20.04.2013, 22:30:08 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 358 Pomógł: 0 Dołączył: 19.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
no właśnie tak nie działa, bo już tak próbowałem...
Mi chodzi raczej o coś takiego: RewriteCond %{QUERY_STRING} ^p=([0-9]*)$ [NC] ale nie wiem jak to do końca zmodyfikować pod moją stronę... nie znam się kompletnie na wyrażeniach regularnych |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 728 Pomógł: 76 Dołączył: 12.06.2009 Ostrzeżenie: (0%) ![]() ![]() |
Nie działa tzn. nie przepisuje wyrzuca błąd ?
Może tak spróbuj: RewriteCond %{QUERY_STRING} ^p=([0-9]*)$ [NC] RewriteRule .* index.php?page=artykuly&p=$1 [L,NC] RewriteCond %{REQUEST_URI} ^artykuly/?$ [NC] RewriteRule .* index.php?page=artykuly [L,NC] Link: nazwa_strony.pl/artykuly/?p=3 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 358 Pomógł: 0 Dołączył: 19.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
Teraz jak przejdę pod taki url:
nazwa_strony.pl/artykuly/?p=2 to nie wyświetla mi wyników - nie czyta w ogóle GETa Reszta ok. Całość: Kod RewriteEngine on DirectoryIndex index.php RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{QUERY_STRING} ^p=([0-9]*)$ [NC] RewriteRule .* index.php?page=artykuly&p=$1 [L,NC] RewriteCond %{REQUEST_URI} ^artykuly/?$ [NC] RewriteRule .* index.php?page=artykuly [L,NC] RewriteRule ^([a-zA-Z-_0-9]+)/([a-zA-Z-_0-9]+)/?$ index.php?page=$1&id=$2 [NC,L,QSA] RewriteRule ^([a-zA-Z-_0-9]+)/?$ index.php?page=$1 [L] Edit: za pomoc dam na piwo (IMG:style_emoticons/default/wink.gif) Ten post edytował d.stp 20.04.2013, 23:17:35 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 728 Pomógł: 76 Dołączył: 12.06.2009 Ostrzeżenie: (0%) ![]() ![]() |
Sprawdzenie czy są jakiekolwiej cyfry w query stringu ?
RewriteCond %{QUERY_STRING} [0-9]+ [NC] |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Nie ma potrzeby korzystania z RewriteCont i zmiennej QUERY_STRING, wystarczy skorzystać z flagi QSA.
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 358 Pomógł: 0 Dołączył: 19.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
Crozin, Niestety nie działa
amii, nie wiem o co chodzi ;/ próbowałem tak: RewriteRule /artykuly/(.+) /index.php?page=artykuly?p=$1 [QSA] Udało mi się zrobić. Ale jest następny problem... Mam takie coś teraz: Kod RewriteEngine on DirectoryIndex index.php RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?page=artykuly&p=$1 [QSA] RewriteRule ^([a-zA-Z-_0-9]+)/([a-zA-Z-_0-9]+)/?$ index.php?page=$1&id=$2 [L] RewriteRule ^([a-zA-Z-_0-9]+)/?$ index.php?page=$1 [L] Problem jest w tym, że jak przejdę pod adres: nazwa_strony.pl/artykuly/nazwa-artykulu/ to mod rewrite traktuje to jakbym chciał wyświetlić taką stronę w paginacji... ;/ pewnie prosta sprawa, ale jak pisałem ja się na tym nie znam Ten post edytował d.stp 21.04.2013, 00:10:17 |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 511 Pomógł: 143 Dołączył: 13.03.2010 Skąd: Jasło Ostrzeżenie: (0%) ![]() ![]() |
Kod RewriteRule ^(.*)$ index.php?page=artykuly&p=$1 [QSA] no bo ta reguła łapie ci wszystkie adresy url i kolejne nie mają szansy sie wykonać bo URL został już przetworzony. |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 358 Pomógł: 0 Dołączył: 19.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
Po całej nocce kombinowania udało mi się zrobić tak, że doklejany parametr już działa, ale teraz jest problem bo jak wejdę na podstronę artykuly/ to nie pokazują mi się żadne wyniki, jest tylko paginacja... Jak dopiszę parametr ?p=X to wtedy ładnie działa. Po wejściu w artykuly/nazwa-arta/ też ładnie się wyświetla.
Całość: Kod RewriteEngine on DirectoryIndex index.php RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^artykuly/$ index.php?page=artykuly&p=$1 [QSA] RewriteRule ^([a-zA-Z-_0-9]+)/([a-zA-Z-_0-9]+)/?$ index.php?page=$1&id=$2 [L] RewriteRule ^([a-zA-Z-_0-9]+)/?$ index.php?page=$1 [L] Proszę o pomoc |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
W pierwszym RewriteRule odnosisz się do pierwszej grupy wyłapanych znaków (p=$1), jednak nigdzie nie tworzysz tej grupy - we wzorze brak (...). Takie coś powinno generować Ci błąd. Co więcej nie dodałeś przy tej regule flagi L przez co porównywanie następuje dalej - ostatnia reguła również wyłapie taki URL.
PS. RewriteCond dotyczy jedynie jednej reguły RewriteRule, następującej tuż po nim. |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 358 Pomógł: 0 Dołączył: 19.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
Ale nie pisz mi co robię tylko powiedz mi jak to zrobić żeby działało, bo ja się na tych regułkach kompletnie nie znam i nie mam zamiaru teraz się tego uczyć bo nie mam na to czasu...
Dodałem flage [L, QSA] ale dalej to samo Pomoże ktoś? |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 658 Pomógł: 95 Dołączył: 20.12.2005 Skąd: N54,35° E18,63° (Gdańsk) Ostrzeżenie: (0%) ![]() ![]() |
A po co tak kombinujesz?
Kod RewriteRule ^([a-zA-Z-_0-9]+)/?$ index.php?page=$1 [L]
RewriteRule ^([a-zA-Z-_0-9]+)/([a-zA-Z-_0-9]+)/?$ index.php?page=$1&id=$2 [L] |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 358 Pomógł: 0 Dołączył: 19.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
Jak to po co? a jak inaczej to zrobic?...
Pomoże ktoś? |
|
|
![]() ![]() |
![]() |
Aktualny czas: 6.10.2025 - 16:36 |