Article View: pl.comp.www
Article #408871Re: php, linki z nazwami a $_GET, SEO
From: Mateusz Viste
Date: Fri, 17 Nov 2023 08:24
Date: Fri, 17 Nov 2023 08:24
55 lines
3225 bytes
3225 bytes
dn. Fri, 17 Nov 2023 01:38:51 GMT, Marcin Debowski napisał: > > Amatorsko administruję kilkoma stronami www. Te z URL-ami typu > > "?id=123" są równie dobrze indeksowane, co te z fikuśniejszymi > > URL-ami. > > Indeksuje, ale czy nie obniża pozycji? Dobre pytanie, w sumie to nie wiem. Tematyka tych moich stron jest na tyle niszowa, że tak czy inaczej jestem na pierwszym miejscu więc trudno mi określić jak to mogłoby wyglądać przy konkurencji. > > RewriteEngine On > > RewriteRule "^([0-9]+)" "?id=$1" [PT] > > > > Powyższy regex łapie wyłącznie identyfikatory numeryczne. Dla innych > > należy go odpowiednio dostosować. > > Rozumiem, że w powyższym żądanie typu (przykład) /79 będzie > przekształcone do ?id=79? Dokładnie tak. Podobnej regułki używam np. tutaj: https://ulwarre.pl/forum/ Wątki na forum dostępne są pod linkami typu /forum/xyz, ale po przejściu przez MOD_REWRITE moje PHP dostaje tak naprawdę zapytania w postaci /forum/?thread=xyz (zresztą obie formy działają publicznie). Oczywiście równie dobrze możesz użyć słów zamiast numerycznych wartości. Jak używam numerycznych tylko dlatego, że łatwo jest je zabezpieczyć. Wystarczy argument przepuścić przez intval() i już mam gwarancję, że nikt mi tu żadnego sqla czy innega dziadostwa nie wstrzyknie. Słowa też można zabezpieczyć, ale potrzeba nieco więcej uwagi. Możesz też użyć kilku reguł naraz, np. żeby przekierować zapytania do innego pliku php w zależności od pierwszej litery słowa, czy tam innego dyskryminatora. > Jakos tak?: > > RewriteRule "^([A-Za-z\-_])+" "?id=$1" [PT] > > Tam jest potrzebny "escape" przy trzecim "-"? Do testowania regexów możesz użyć tego fajnego narzędzia: https://www.regexpal.com/ Twoja regułka na oko wygląda dobrze, tylko uważaj na skutki uboczne. Np. jeśli będziesz chciał opublikować później jakiś prawilny plik typu "mojastrona.pl/plik_do_pobrania", to ten wpadnie w RewriteRule i zostanie przetłumaczony na "?id=plik_do_pobrania". Warto od startu pomyśleć nad jakąś nomenklaturą, żeby później nic nie miało szans się pomieszać. Mateusz
Technical Details
Message-ID:
<20231117092445.6904f7a5@mateusz>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!3.eu.feeder.erje.net!feeder.erje.net!weretis.net!feeder8.news.weretis.net!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mailReferences:
<1lh5N.7631$kN77.3424@fx06.ams1> <20231116110645.5cf21cf2@mateusz> <Luz5N.3940$WH47.1477@fx08.ams1>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!3.eu.feeder.erje.net!feeder.erje.net!weretis.net!feeder8.news.weretis.net!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: Mateusz Viste <mateusz@x.invalid> Newsgroups: pl.comp.www Subject: Re: php, linki z nazwami a $_GET, SEO Date: Fri, 17 Nov 2023 09:24:45 +0100 Organization: ... Lines: 75 Message-ID: <20231117092445.6904f7a5@mateusz> References: <1lh5N.7631$kN77.3424@fx06.ams1> <20231116110645.5cf21cf2@mateusz> <Luz5N.3940$WH47.1477@fx08.ams1> MIME-Version: 1.0 Injection-Info: dont-email.me; posting-host="b2c82ae113357983666009fef180fdba"; logging-data="2868584"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18hTjhM3cayZ4OfNX0f1we9" Cancel-Lock: sha1:f2F5JXF3rr/eBPKT55cMkY7WYec= X-Newsreader: Claws Mail 4.1.1 (GTK 3.24.34; x86_64-suse-linux-gnu) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit