Gdy wpisze w przegl�darce www.mojadomena.com/pl/aaa.html lub
www.mojadomena.com/index.php?lang=pl&strona=aaa to pojawia siďż˝ ta sama
strona.
Teraz chcia�bym zablokowa� "brzydkie" adresy
www.mojadomena.com/index.php?lang=pl&strona=aaa pozostawiaj�c jedynie
www.mojadomena.com/pl/aaa.html G��wnie zale�y mi na usuni�ciu brzydkich
adres�w z wyszukiwarek a pozostawieniu tylko �adnych.
Zawarto�� pliku .htaccess
1. RewriteEngine on
2. RewriteRule !^(en|pl)(\/)?(\/(.*)\.html)?$ 404.html [NS,NC,L]
3. RewriteRule ^(en|pl)(\/)?(\/(.*)\.html)?$ index.php?lang=$1&strona=$4
[NC,L]
Gdy dodaj� linijk� 2. to nie dzia�a nic, wszystko jest przepisywane na
404.html
Przecie� je�li adres pasuje do 3. to nie pasuje do 2. Jednak i tak �adne
adresy s� blokowane przez regu�� 2.
Dlaczego, co robi� �le? Jak inaczej mog� osi�gn�� sw�j cel?
brzydkie przekieruj na ladne:
RewriteRule ^_________?$ http://%{HTTP_HOST}/________ [R=301,L,NC]
Redirect 301
a co do problemu wyzej to hmm no ciekawe, a moze zmien kolejnosc 2-3?
NS co robi? L to last, NC to chyba bylo ze ma ignorowac wielkosc litery?
Mog� i przekierowa�, nawet lepiej bo googole i ludzie nie zb��dz�.
Jednak podstaw� jest regu�ka kt�ra to zrobi, a teraz wyczerpa�y si� ju�
moje pomys�y.
> a co do problemu wyzej to hmm no ciekawe, a moze zmien kolejnosc 2-3?
Nic nie daje, nadal sďż˝ eliminowane wszystkie.
> NS co robi? L to last, NC to chyba bylo ze ma ignorowac wielkosc litery?
'nosubreq|NS' (not for internal sub-requests)
http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewriterule
NS mia�o nie by� w regu�ce, by�o dodane w ramach test�w, jednak te� nic
nie zmienia�o.
W dodatku jesli parametry w GET byly raz w takiej kolejnosci a raz w innej to
tez ciezka praca...
Odpu�ci�em sobie mod_rewrite i zrobi�em w php. To przynajmniej dzia�a
if ( preg_match(
'/\/index\.php\?(lang=(pl|en)&?)?(strona=([a-z0-9]*))?/i',
$_SERVER['REQUEST_URI'], $matches) ) {
$url = 'http://domena.com/';
if ( !empty($matches[2]) ) {
$url .= $matches[2] . '/';
}
else {
$url .= 'pl/';
}
if ( !empty($matches[4]) ) {
$url .= $matches[4] . '.html';
}
header('HTTP/1.1 301 Moved Permanently');
header('Location: '.$url);
exit();
}