Linki z mod_rewrite

0

Tak sobie pomyślałem, że by można nieco usprawnić działanie 4p od strony użytkownika i (co dość istotne) ułatwić indeksowanie robotom, w szczególności chodzi mi o GoogleBota.

Jak wiadomo, GoogleBot nie lubi stron z "?", "&" itp. w adresie i czasem potrafi takich nie zindeksować albo coś przy nich popsuć.
Inna rzecz, że takie linki są niezbyt ładne i czasami problematyczne w przekazywaniu np. przez różne komunikatory.

Rozwiązać to można w bardzo prosty sposób - przez mod_rewrite.
Standardowo jest w Apaczu, zwykle trzeba go tylko włączyć.
No, jeszcze jest potrzebny htaccess, ale to 4p ma z pewnością.

No i starczy tylko np. w głównym katalogu forum w .htaccess wstawić takie cuś:

RewriteRule ^/topic/([0-9]+)$ /viewtopic.php?id=$1

I to starczy, żeby po wpisaniu http://4programmers.net/Forum/topic/1234 efekt był taki sam, jakby ktoś wpisał http://4programmers.net/Forum/viewtopic.php?id=1234.
LInk jest krótszy, łatwiejszy do zapamiętania i indeksowalny dla robotów.
Poza tym, ci wszyscy cholerni "chakierzy" nawet nie będą znać prawdziwych nazw plików, a wpisanie zamiast numeru np. "abcd" nie wywali strony z błędem SQL, tylko 404. (Tak, wiem że można ściągnąć coyote - ale ci o których mowa są na to za głupi :))
Inny przykład, w głównym katalogu:

RewriteRule ^/faq/([0-9]+)$ /faq.php?id=$1
RewriteRule ^/faq/([0-9]+)/edit$ /faq_add.php?id=$1

Efekt: http://4programmers.net/faq/1234/edit włączy edycję wskazówki.

Pomysł chyba wart wprowadzenia, w szczególności że to nie będzie raczej nic trudnego.

0

Mi sie podoba, nawet bardzo. Moze wowczas daloby sie uzyc google, do przeszukiwania serwisu.
Nie bez znaczenia jest tez fakt, ze wowczas, 4p zapewne staloby sie bardziej popularne :)

0

No, sprawa jest niby prosta. Pozostaje jednak pozmienianie linkow w skorkach oraz skryptach...

0

No, sprawa jest niby prosta. Pozostaje jednak pozmienianie linkow w skorkach oraz skryptach...

Przepuścić przez sed'a? Ze skorkami nie byloby wielkiego problemu... ale w skryptach to trzeba bardziej uwazac :(

0

Przepuścić przez sed'a? Ze skorkami nie byloby wielkiego problemu... ale w skryptach to trzeba bardziej uwazac :(

No tak trzeba uwazac ale co szkodzi sprobowca :> Jakis mega replaceator i do dziela :> Jak bedzie dzialac to dobrze a jak nie to trudno i bedzie tak jak jest :)

0

Dla podanego wyzej przykladu wystarczyloby cos takiego:
sed 's:viewtopic\.php\?id=:topic/:g'

Ale te podane wyrazenia sa niewystarczajace. Zapytania sa bardziej zlozone. viewtopic moze miec takze parametr okreslajacy strone.
Jezeli ktos poda mi skladnie wszystkich zapytan, to w wolnych chwilach moge napisac skrypcik podmieniajacy.

I tutaj od razu pytanie: jaka skladnia powinna byc.
Bo: /topic/123 to troche za malo dla bardziej zlozonych. Jezeli mamy np:
viewtopic.php?id=123&p=1 to chyba powinnismy zastosowac cos w stylu:
/topic/id/123/p/1
ew.
/topic/123/1
Ale wowczas trzeba ustalic, jaka ma byc kolejnosc parametrow i co zrobic, jezeli takich brakuje.

0

Ustalenie kolejności (faktycznie rzecz potrzebna) najlepiej zrobić po prostu tak, żeby link wyglądał naturalnie - czyli np. właśnie topic/1234/3 dla trzeciej strony. A co do pustych - można po prostu topic/1234//cosjeszcze przy wyrażeniu regularnym z | i regółką na brak czegokolwiek, czyli:

RewriteRule /topic/([0-9]+)/([0-9]+|$)$/cosinnego /viewtopic.php?id=$1&p=$2&...

0

topic/1234//

To jest nieprawidlowy url :(
Poniewaz przy braku parametru przyjmowane jest domyslnie p=0, wiec nalezaloby wszystkie tego typu zamieniac na:
/1234/0/
Tak wiec wszystkie mozliwe linki poprosze tu wypisac...
Jak ktos ma u siebie zrodelka, to niech wykona w katalogu z pliczkami:
grep \? php tpl > wyniki.txt
I wrzuci tutaj wyniki. Moze nie bedzie to najlepszy wybor bajek, ale tez mozna poczytac ;)

0

Kolejny staroć, którego odświeżam bo uważam, iż jest to pomysł godny uwagi a został zapomniany...

W powyższych przykładach powstaje problem kolejności parametrów - na stronie http://era.pl zostało to bardzo ładnie rozwiązane - przykład:
http://era.pl/index.php/id=prasa_inf/press_id=603/zone=10/section=taktak
Więc i u nas mogłoby to być w ten sposób - wtedy kolejność nie ma znaczenia, a boty wyszukiwarek mogą pełzać po stronce i ją indeksować - wtedy można zrezygnować z naszej (niezbyt zaawansowanej) wyszukiwarki i zrobić taką, jaka jest na http://php.net - czyli odnoszącą się do http://google.pl z parametrem <font color="darkblue">site:4programmers.net</span>

0

No to do roboty.
Skrypty przepuścić trzeba przez sed-a z regułką:
{
s:\&:\/:g
s:.php?:.php/:g
}

Z RewriteRule mam na razie problemy, aby to w jednej regulce zmieścic :( Na razie czytam mana.

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