Redirect v .htaccess

Lep pozdrav!

Sicer sem že drugje postavil vprašanje, a je verjetno to pravo mesto.

Pri straneh, ki imajo napako v strežniku ali jih ni bilo moč najti se uporabi redirect v .htaccessu. Prosim za pomoč ali je spodaj naveden postopek pravi:

Statične:

redirect 301 /old/old.htm http://www.you.com/new.htm (preprosto opravilo)

Dinamične:

RewriteEngine on
RewriteCond %{QUERY_STRING} ^id=[page-id-nr]$
RewriteRule ^/page.php$ http://www.example.com/newname.htm? [L,R=301]

Mi lahko na konkretnem primeru pomagate, če delam prav. Recimo da imam povezavo:

http://mamidesign.si/cms.php?id_cms=5

Je rešitev potem:

RewriteEngine on
RewriteCond %{QUERY_STRING} ^id=5$
RewriteRule ^/cms.php$ http://www.mamidesign.si? [L,R=301]

In tako za vsak link posebej? Obstaja rešitev, da se da z eno ukazno vrstico to narediti za vse nedelujoče linke, npr.:

redirect 301 / http://www.you.com/

Hvala vnaprej za vso pomoč!

p.s. Tukaj sem popoln laik...

9 odgovorov

Probaj to za vse 301-ke

RewriteRule ^.+$ http://www.mojadomena.com [R=301,L]

bRainWithStorm - kaj konkretno naredi ta ukaz?

vse kaj ne najde kot page (301) redirecta na root. recimo http://www.mojadomena.com/tristo_kosmatih gre na root http://www.mojadomena.com

Sem upošteval tvoje in se mi je sesula stran. Potem sem videl, da že imam to pravilo notr, samo ni bila vnešena moja spletna stran:

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

to mora biti zadnje pravilo. vsa pravila prej upostevana ce pa nobeno pravilo ni najdeno se uporabi to zadnje in forwardira na root. zadeva je dokaj enostavna vprasanje je le kaj tocno zelis.

Saj pravim, da je moje znanje precej medlo na tem področju in dostikrat se pač zgodi, da tisti ki je strokovnjak na določenem področju preveč posplošeno pove laiku (ker mu je pač samoumevno) :)

Da ne odpiram nove teme...Sam imam podoben primer, kompletno stran v joomli sem preselil novo domeno, na stari pa sem vnesel to kodo v .htaccess-u datoteki:

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^primer.eu [NC]
RewriteRule ^(.*)$ http://www.primer.eu/$1 [L,R=301]

Sedaj če v sam url vpišem primer.eu mi pravilno preusmeri, če pa vtipkam www.primer.eu pa napiše "The website you are trying to access is unknown in the system." V direktorij od stare domene sem vnesel samo .htaccess datoteko. Potreboval pa bi tudi recimo, da mi vse urlje pod staro domene avtomatsko preusmeri uporabnike na novo domeno. Recimo, če uporabnik kline staradomena.si/poslovalnice, ga avtomatsko prenese na primer.eu. Kako bi pravilno uredil .htaccess datoteko, da bi delovalo tako kot sem si zamislil. Za vsako pomoč bi bil izjemno hvaležen.

TilenM:

Pri straneh, ki imajo napako v strežniku ali jih ni bilo moč najti se uporabi redirect v .htaccessu. Prosim za pomoč ali je spodaj naveden postopek pravi:

Za sporočila o napaki ne rabiš delat redirecta. Razen če seveda želiš. Jaz te razumem, da želiš da se namesto klasičnega errorja (404 stran ne obstaja) pojavi stran, ki jo ti določiš. To narediš tako da sam določiš svoj error page takole:

ErrorDocument 404 /404.html

404.html je fajl ki ga sam narediš v rootu z poljubno vsebino.
Če želiš preusmeriti še druge errorje ne samo 404, narediš to na podoben način. Še spisek HTTP status sporočil:

http://en.wikipedia.org/wiki/ListofHTTPstatuscodes#4xxClientError

avion121:
Da ne odpiram nove teme...Sam imam podoben primer, kompletno stran v joomli sem preselil novo domeno, na stari pa sem vnesel to kodo v .htaccess-u datoteki:

Uh. Tole si pa zmedeno napisal. Če imaš staradomena.si in novadomena.si in bi rad preusmeril vse zahtevke na novo domeno, z ohranjeno pripono oz. z tistim kar je bilo za domeno. Lahko narediš tako:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?staradomena.si$ [NC]
RewriteRule ^(.*)$ http://www.novadomena.si$1 [R=301,L,QSA]

S tem pobereš zahtevke z www ali brez in staradomena.si/poslovalnice se ti prenese na novodomena.si/poslovalnice.