Autor Zpráva
siva01
Profil
Řeším takový záludný problém, který se mi nedaří vyřešit. Jedná se o migraci webu na novou doménu. Na nové doméně ovšem nejsou všechny URL, které byly na minulé. Některé URL navíc nemají být přesměrovány na novou URL, ale jen na E404 s parametrem původní URL.

např.

/moje-stara-url se má přesměrovat na http://novadomena.cz/e404?moje-stara-url

Zatím to mám řešené takto:

RewriteEngine on
ErrorDocument 404 /e404
RewriteRule e404\.* http://novadomena.cz/e404 [R=301]

Jak je asi jasné, tak se mi všechno přesměruje na /404, ale nevím, která stránka to vlastně nefungovala.

Jak to vyřešit?
juriad
Profil
Mod_rewrite
Nejspíš chceš použít QSA, přidat na konec všechny současné parametry.
siva01
Profil
juriad:
jj.. QSA potřebuju, ale u jen u E4O4 a zároveň to přesměrovat. Zároveň tam jsou URL, které jsou přesměrované na konkrétní URL, takže se to jako obecné pravidlo nedá udělat. To QSA má platit jen pro některé URL, které nejsou jmenovitě uvedené.


Potřeboval bych tedy nějak definovat RewriteCond, které bude platit jen pro stránky, které hází E404


ErrorDocument 404 http://novadomena.cz/e404 - tohle také funguje

ErrorDocument 404 http://novadomena.czz/e404 [QSA] - a tohle už hází E500
Davex
Profil
Když je adresa špatná, tak je špatná a uživatel o tom má být informován bez přesměrování (kdyby byla chybová stránka /e404.php v PHP, tak je v ní ta chybná adresa většinou dostupná v proměnné $_SERVER["REDIRECT_URL"]).
siva01
Profil
Davex:
Když si dám vypsat to $_SERVER["REDIRECT_URL", tak mi to ovšem napíše tu stránku E404.php, ale ne tu původní URL.

Já chci, aby ti uživatelé klidně znali původní URL. Nemusí se to přesměrovávat na E404. Hlavní je, aby se všechny E404 zobrazovaly na nové doméně.

Tedy potřebuji toto, ale jen pro stránky, které nejsou přesměrované individuálně.
RewriteCond %{HTTP_HOST} ^staradomena\.com [NC]
RewriteRule ^(.*)$ http://.novadomenal.cz/$1 [R=301,QSA,L]


ale zároveň potřebuju, aby platilo

RewriteRule  staradivnaurl/d-70484\.*    http://www.novadomena.cz/podobna-stranka       [R=301]
Davex
Profil
1. Na staré doméně se přesměrují
  a) nejdřív vyjmenované adresy

RewriteRule  staradivnaurl/d-70484\.*    http://www.novadomena.cz/podobna-stranka       [R=301,NE,L]

  b) potom vše ostatní

RewriteCond %{HTTP_HOST} staradomena\.com$
RewriteRule ^(.*)$ http://www.novadomena.cz/$1 [R=301,NE,L]

2. Na nové doméně se nastaví chybová stránka

ErrorDocument /e404.php

3. Na chybové stránce /e404.php bude kromě dalšího i výpis adresy

<?php
  echo $_SERVER["REDIRECT_URL"];
siva01
Profil
Davex:
Při tomto postupu se ty E404 přesměrují správně, ale ty vyjmenované adresy se cyklí, takže to skončí na URL http://www.novadomena.cz/novadomena.cz/podobna-stranka
Davex
Profil
Toto by se zacyklit nemělo. Pravděpodobně je tam konflikt s něčím dalším.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0