Wpis z mikrobloga

Siema #seoinfo !

Przygotowałem dla Was małą ściągę z najczęściej używanymi przekierowaniami i regułami w htaccessie. Mam nadzieję, że się przyda Wszystko jest przygotowane do podstawienia danych albo po prostu Ctrl+c Ctrl+v – kopiujcie śmiało!

Wołam dzisiaj też #webdev #seo #pozycjonowanie bo wydaje mi się, że może się to komuś z Was również przydać :)

Na wykop wrzucam wersję surową, jeżeli ktoś chciałby zapisać sobie zakładkę ze ściągą albo przeczytać dodatkowe komentarze i zobaczyć wpis z kolorkami to zapraszam na mojego bardzo minimalistycznego bloga

Wszystkie przekierowania w .htaccess musimy wpisywać po wpisie RewriteEngine On, który uruchamia modrewrite

Przekierowanie bez www-> www

RewriteCond %{HTTP
HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTPHOST}/$1 [R=301,L,NC]

Przekierowanie www -> bez www

RewriteCond %{HTTP
HOST} ^www\.
RewriteRule ^(.*)$ http://NAZWADOMENY/$1 [R=301,L,NC]

Przekierowanie domeny na inną domenę

RewriteCond %{HTTP
HOST} ^(www\.)?STARA_DOMENA [NC]
RewriteRule (.*) http://NOWADOMENA/$1 [R=301,L]

Przekierowanie index.php i index.html na /

RewriteCond %{THE
REQUEST} ^.*/index\.(php|html)
RewriteRule ^(.*)index.(php|html)$ /$1 [R=301,L]

Najprostsze przekierowanie 1 do 1

RewriteRule ^STRONASTARA/?$ $1/STRONANOWA$2 [R=301,L]

Przekierowanie adresu bez fragmentu URL (np. katalogu)

RewriteRule ^(.*)KAT_NIECHCIANY(.*)$ /$1$2 [R=301,L]

Przekierowanie subfolderu na folder

Przykład: example.com/rewrite -> example..com/rewrite/end

RewriteCond %{REQUESTURI} !pl/cat/rewrite/example/end
RewriteRule ^pl/cat/rewrite$ /pl/cat/rewrite/example/end [R=301,L]

Przekierowanie bez query stringa

RewriteRule ^STARY
ADRES/(.*)$ /NOWYADRES? [R=301,NC,L]

Przekierowanie adresu z query stringiem

RewriteCond %{REQUEST
URI} ^STARYADRES
RewriteCond %{QUERY
STRING} VARIABLE=VALUE
RewriteRule ^(.*)$ NOWYADES? [R=301,L]

Przekierowanie znaków specjalnych np. polskich liter (URL: przykŁad

Zależnie od ustawień serwera używamy:

RewriteRule ^przyk\xC5\x82ad$ NOWY
ADRES? [R=301,NE,NC,L]

drugie rozwiązanie:
RewriteRule ^STARY_ADRES$ http://www.example.com/przyk%C5\%82ad [R=301,NE,NC,L]

trzecie rozwiązanie:
Można można trochę pójść na łatwiznę i znaki specjalne zastąpić (.*) (dowolne znaki):
w tym wypadku ',' (przecinek) pomiędzy częściami URLa został zastąpiony przez (.*):
RewriteRule ^KAT_STARY(.*)DALSZYURL [R=301,L]

Dodanie i usunięcie rozszerzenia '.html'

Przypisanie adresów bez rozszerzenia do tych z html:
RewriteRule ^([^\.]+)$ $1.html [NC,L]

Usunięcie rozszerzenia:
RewriteCond %{THE
REQUEST} \.html
RewriteRule ^(.*)\.html$ /$1 [R=301,L]

Dodanie i usunięcie slasha na końcu adresu

Usunięcie slasha:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]

Dodanie slasha:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*[^/])$ /$1/ [L,R=301]

Wskazanie adresu do obsługi błędu 404

ErrorDocument 404 /KATALOG/404.php

Dodanie „Wykorzystaj pamięć podręczną przeglądarki”

Header set Cache-Control „max-age=864000, public, must-revalidate”
Header unset Last-Modified

SetOutputFilter DEFLATE
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript

Utworzenie przyjaznych adresów

Najbardziej łopatologiczne podejście ale często przydatne przy starych skryptach jak jest site 10 serwisu i nie chce się człowiekowi zastanawiać co ktoś miał na myśli tylko szybko wdrożyć i zapomnieć…

Indywidualnie:
RewriteRule ^example\.html$ ?id=5
RewriteCond %{REQUESTURI} ^\/index\.php
RewriteCond %{QUERY
STRING} id=5
RewriteRule ^(.*)$ /example.html? [R=301,L]

Masowo:
RewriteRule ^produkty-(.+)\.html$ produkty.php?numer=$1&podnumer=$2&menu=$3 [L]
RewriteCond %{REQUESTURI} ^\/produkty\.php
RewriteCond %{QUERY
STRING} numer=(.+)&podnumer=(.+)&menu=(.+)
RewriteRule ^(.*)$ /produkty-%1-%2-%3.html? [R=301,L]

Jak nie ma index.php (albo innego adresu do złapania) i query zaczyna się od /

Przykładowy PHP:
$adresy = array(
'?id=1' => 'example.html',
'?id=5' => 'example-kontakt.html',
'?id=46' => 'example-article46.html',
);

$uri = trim($SERVER[‚REQUESTURI’], '/');
if(arraykeyexists($uri, $adresy)) {
header('HTTP/1.1 301 Moved Permanently');
header('Location: http://NAZWA_DOMENY/' . $adresy[$uri]);
header('Connection: close');
exit;}

W htaccess przypisujemy adresy:
RewriteRule ^example\.html$ ?id=1 [L]
RewriteRule ^example-kontakt\.html$ ?id=5 [L]
RewriteRule ^example-article46\.html$ ?id=46 [L]

Widzisz gdzieś błąd? Daj znać w komentarzu...

Jeżeli przejrzałeś wpis do końca to się bardzo cieszę :) na koniec mała reklama... pod tagiem #seoinfo prowadzę na wzór odzeradogamedevelopera akcję optymalizacji małego serwisu internetowego. Opisuję co, dlaczego i jak robię. Jesteśmy już po trzech wpisach pitu-pitu (plan, strategia dobór, słów kluczowych) i od następnego będą bardziej konkretne informacje :) Serdecznie zapraszam do śledzenia w obojętnie jakim medium: Linkedin, twitter, blog albo tutaj na wykopie :)
  • 10
  • Odpowiedz
sorry widzę, że wycięło mi jakieś numery przy kopiuj wklej i niektóre rzeczy nie nadają się do ctrl+c ctrl+v ale na szczęście widać o co chodzi ;)
  • Odpowiedz
@Gruzlik: Jesteś wielki podałeś więcej przykładów niż w nie jednym poradniku
A jak byś zaradził temu, nie mam pojęcia jak to chwycić. Sklep postawiony na preście ustawione miałem dwa języki pl i en ostatecznie pozostawiłem samo pl i coś się popsuło i w wynikach googla mam pełno wyników ze starym adresem których obecnie nie ma co wywala sporo 404
www.domena.pl/pl/kategoria żeby usunąć pl i pozostawić www.domena.pl/kategoria
  • Odpowiedz
@PabloFBK: to się może Ci przydać... usunięcie sufixa w domyślnym języku presty dla multilangue:
First back-up the files: Cookie.php and Tools.php


1. Modify classes/Cookie.php >> on line 307


$this->detectlanguage = true; with
$this->detect
language = false;

2. Modify site/classes/Tools.php >> on line 350 and at the end of the line 368 add

/* Automatically detect language if not already defined, detect_language is set in Cookie::update */
if (!Tools::getValue('isolang') && !Tools::getValue('id
  • Odpowiedz