[.htaccess] Poprawne przekierowanie 301


(Efemek) #1

Witajcie!

Ostatnio chciałem przenieść witrynę firmy z adresu nazwamojejfirmy.pl na nazwamojejfirmy.com.pl. Oczywiście nazwamojejfirmy zastępuje prawidłową domenę :wink:

Pod *.com.pl ma znajdować się strona firmowa a pod 'samym' *.pl strona sklepu.

domena nazwamojejfirmy.com.pl wskazuje na to samo mojesce, co domena z rozszerzeniem *.pl

aktualnie na serwerze siedzi sobie taki oto pliczek .htaccess:

# Turn on URL rewriting

RewriteEngine On


# Installation directory

RewriteBase /


RewriteCond %{HTTP_HOST} ^nazwamojejfirmy.pl

RewriteRule ^(.*)$ http://www.nazwamojejfirmy.pl/$1 [R=301,L]


#RewriteCond %{HTTP_HOST} ^sklep.nazwamojejfirmy.pl

#RewriteRule ^(.*)$ http://www.nazwamojejfirmy.pl/sklep/$1 [R=301,L]


# Allow any files or directories that exist to be displayed directly

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d


# Rewrite all other URLs to index.php/URL

RewriteRule .*\.html index.php/$0 [PT,L]

RewriteRule ^media/(.+\.(gif|jpg|jpeg|png|css|js|htc|swf))$ application/views/$1 [L]

RewriteRule ^photos/(.+\.(gif|jpg|jpeg|png|css|js))$ application/photos/$1 [L]

RewriteRule ^libs/(.+\.(gif|jpg|jpeg|png|css|js))$ application/libraries/$1 [L]

RewriteRule ^xml/(.+\.(xml))$ application/xml/$1 [L]

RewriteRule ^pliki/(.+\.(.*))$ application/pliki/$1 [L]


RewriteRule ^klient/zamow/([0-9a-z]+)/zamowienie=([0-9]+)&id_wniosku=([0-9]+)/ZAG$ klient/zamow/$1/$2/$3\.html [L]

RewriteRule ^index.htm$ http://www.nazwamojejfirmy.pl/$1 [R=301,L]

chcialbym dodać redirect do poszczególnych kilku podstron - bierzemy na warsztat jeden przykład. Nie chcę przekierować oczywiście calej domeny:

Redirect 301 / ^cenniki-i-kosztorysy.html http://www.nazwamojejfirmy.com.pl/cenniki-i-kosztorysy.html

lub (co zapewne jest błędne)

Redirect 301 / http://www.nazwamojejfirmy.pl/cenniki-i-kosztorysy.html http://www.nazwamojejfirmy.com.pl/cenniki-i-kosztorysy.html

testowane w FF i lisek krzyczy, że domena uniemożliwia prawidłowe wczytanie strony (czytałem, że ponoć FF sprawia problemy ze stałym przekierowaniem)

Będę wdzięczny za szelką pomoc i porady. Jeśli ktoś może tutaj podać prawdiłowego redirect'a na koncie zapewni sobie dobry uczynek :wink:


(Drobok) #2
[code]Włącz bbcode w ustawieniach konta

RewriteRule ^http://www.nazwamojejfirmy.pl/cenniki-i-kosztorysy.html$ http://www.nazwamojejfirmy.com.pl/cenniki-i-kosztorysy.html [R=301,L]

Weź pod uwagę, że 301 jest stałe. Jeśli coś potem zmienisz musisz wyczyścić ciastka, bo dostaniesz error. Do testów jest lepsze z tego co pamiętam 302 :slight_smile:

Skoro obie wskazują na ten sam serwer to po co ci to, że tak spytam ? Imo to bez sensu, tylko user zauważy że mu się domena zmieniła więc co uważniejszy nic nie kupi :slight_smile: Poza tym powinno być:


(Efemek) #3

drobok - tak, 301 jest przekierowaniem stałym i takie jest właśnie w zamiarze. Ze względów pozycjonowanie zdecydowanie lepsze jest 301 bo przenosi (wg danych) 90% siły :slight_smile:

Dzięki za poprawkę kodu - zaraz rzucę okiem jak to wygląda na serwerze.

edyta : szczerze mówiąc na serwerze nic się nie dzieje - tzn. przekierowanie poprawnie nie funkcjonuje (nadal domena to 'nazwamojejfirm.pl' a nie 'com.pl'


(Drobok) #4

Nie edytuj, bo nie mam czasu sprawdzać każdego tematu w którym napiszę co parę minut. Na przyszłość usuń post i napisz go na nowo :slight_smile:

Nie miałem na czym sprawdzić, w sumie rewrite trzeba bez domeny. Spróbuj tak:

RewriteCond %{HTTP_HOST} ^nazwamojejfirm.pl'

RewriteRule ^cenniki-i-kosztorysy.html$ http://www.nazwamojejfirmy.com.pl/cenniki-i-kosztorysy.html [R=301,L]

Pierwsza linia powinna zapobiec zapętleniu, a druga przekierowuje cenniki i koszty na inną domenę.


(Efemek) #5

Sprawa wygląda tak, że po wgraniu linijek - tych ostatnich czy poprzednich - nie dzieje się zupełnie nic :wink:

Nie następuje żadne przekierowanie, tzn nie widać go. Celowo pokazałem całego .htacessa bo ani tak, ani siak problemu nie mogę ugryźć :frowning: Sądziłem, że zwykłym Redirectem sprawę załatwię a tu nic...


(Drobok) #6

Problemem może być to:

RewriteRule .*\.html index.php/$0 [PT,L]

Powiem dopisuje on index.php, którego ty w linku na przekierowanie nie masz.

Ale imo wystarczy dać to nasze przed tego rewrite i powinno działać. Nie zapomnij wyczyścić ciastek.


(Efemek) #7

i tak i siak i nie chce skubaniec 'łyknąć' tematu. Spróbuje jeszcze coś podziałać, ale normalnie - ręce opadają.

Dzięki drobok za pomoc :slight_smile: