On 2023-11-17, Mateusz Viste <mat...@x.invalid> wrote:
> 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.
Mnie właśnie zastanawiają perrory googla ntt no i to, że jak patrzysz na
różne strony, to jednak praktycznie wszystkie mają przynajmnien wstawki
wyrazowe w adresach. Te co się specjalizują w seo to zwykle wszystko
mają wyrazowo.
>> > 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).
Nb. nie da się jakoś bez GET, dając REWRITE na twardo w konfiguracji z
przekierowaniem do jednego pliku (np. index.php) bez żadnych parametrów
a potem analizować po $_SERVER['REQUEST_URI'] czy to będzie wtedy
wskazywać zawsze /index.php?
> 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.
Racja.
> 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/
A dzięki. SKorzystam.
> 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ć.
Tam powinno być trochę więcej, bo np. "?id=" powinny przechodzić bez
modyfikacji. Ale też można to zrobić już na poziomie php. Co pasuje to
pasuje, dalej sprawdzenie czy nie ?id="?id=", reszta przekierowana do np.
?id=0.
--
Marcin