Autor Zpráva
helpik.JPW
Profil
Dobrý večer,

má prosba je o soubrou .htaccess, hromadném přesměrování a regulárních výrazech. Ani v jednom nejsem profesionál. Nicméně potřebuji všechny galerie končící "tmpl=component&Itemid=0" přesměrovat na tutéž adresu zkrácenou o právě tento konec "tmpl=component&Itemid=0". V původní verzi totiž server hlásí 500 a v té zkrácené je to ok (200).

Ideální by bylo regulárním výrazem, jelikož těch galerií není málo a ručně psát něco ve tvaru níže by bylo na měsíc.

RewriteCond %{HTTP_HOST}  ^www\.web\.cz$ [NC]
RewriteCond %{QUERY_STRING}  ^tmpl=component&Itemid=0$ [NC]
RewriteRule ^component/phocagallery/22-nazev-galerie1/comment/361-nazev-galerie1$ http://www.web.cz/component/phocagallery/22-nazev-galerie1/comment/361-nazev-galerie1? [R=301,NE,NC,L]

Děkuji za pomoc.
Joker
Profil
helpik.JPW:
V původní verzi totiž server hlásí 500 a v té zkrácené je to ok (200).
To dělá právě kvůli tomu .htaccessu.
Kdyby tam neexistovalo nějaké špatně napsané pravidlo, fungovaly by obě verze.
helpik.JPW
Profil
Joker:
To dělá právě kvůli tomu .htaccessu.
Kdyby tam neexistovalo nějaké špatně napsané pravidlo, fungovaly by obě verze.
To je možný. Ona se po redesignu o to prý starala jen sekretářka.
V .htaccess je nějakých 400 řádků!
A v administraci Joomla je navíc nějaká komponenta, kam jí jejich ajťák nainstaloval nějaký plugin, do kterého má dávat redirect adresy Z a DO!

Z toho co jste mi napsal tedy usuzuji, že již buď v tom pluginu nebo v .htaccessu obdobné pravidlo je a proto to hází 500 (a na dalších 404)?
Co navrhujete? Já bych navrhnul všechny URL adresy z URL smazat, z .htaccessu také a pak přidat nějaké skupinové redirect pravidlo s regulárním výrazem.

A ostatní redirecty raději ať řeším já a ne nějaká administrativní pracovnice.

Jak to vidíte Vy?
Kajman
Profil
Těch 400 řádků pečlivě projděte. Klasické redirecty z jedné do druhé url přesuňte do konfigurace toho pluginu a v .htaccess si nechte co nejméně pravidel - spíše obecného rázu.
helpik.JPW
Profil
Kajman:
Těch 400 řádků pečlivě projděte.
To bude výýýtvor na dlouho :( . Ale máte pravdu v tom, že v .htaccessu nechám základ jako:
- přesměrování indexů
- přesměrování na www
a ostatní prověřím v administraci. Ten plugin (Redirect Manager v češtině se jménuje Přesměrování) jak jsem se dočetl z dokumentace Joomla (ten plugin je v už základu Joomly) - nějak automaticky sbírá ty špatné adresy (404) a sám s nimi nějak pracuje. Nechápu jak to vyhodnocuje a zda i automaticky přesměrovává bez zásahu admina. Jestli je tu nějaký Joomlista, tak k tomu třeba něco napíše.
Pozitivní v tom pluginu vidím to, že má input a tak se v něm budou snad dobře hledat adresy a lépe by se mohly i pomocí GA a GWT kontrolovat.
Negativní vidím to, že tam nejspíše nepůjdou regulární výrazy. Stejně mé znalosti nejsou k nim dostačující a tady jsem se regulárního výrazu nedopátral ;) .

Nicméně zkoušel jsem a toto se asi shoduje:
component/phocagallery/01-nazev-galerie1/comment/([0-9]+)\-([a-zA-Z0-9-]*)\?tmpl=component&Itemid=0

zřejmě odpovídá:

component/phocagallery/01-nazev-galerie1/comment/361-nazev-galerie1?tmpl=component&Itemid=0

Souhlasíte?

Pokud to souhlasí, potřeboval bych dát nějak do kupy 2 body:
1) u každé galerie končící na ?tmpl=component&Itemid=0 přesměrovat na variantu bez ?tmpl=component&Itemid=0 - tedy component/phocagallery/01-nazev-galerie1/comment/361-nazev-galerie1 - to platí pro jednu galerii

2) udělat to pro všechny galerie. Prý to jde pomocí proměnných $1 , ale to opravdu nechápu. Galeriií jsou desítky.

K tomu bodu č 1 by vyhovoval kód z mého úvodního postu?
RewriteCond %{HTTP_HOST}  ^www\.web\.cz$ [NC]
RewriteCond %{QUERY_STRING}  ^tmpl=component&Itemid=0$ [NC]
RewriteRule ^component/phocagallery/22-nazev-galerie1/comment/361-nazev-galerie1$ http://www.web.cz/component/phocagallery/22-nazev-galerie1/comment/361-nazev-galerie1? [R=301,NE,NC,L]

Pokud ano, stačilo by ho zuniverzálnit (asi podle těch proměnných?) a výsledek by byl bod 2.

Opravdu se snažím lidi.
Joker
Profil
helpik.JPW:
To bude výýýtvor na dlouho :( . Ale máte pravdu v tom, že v .htaccessu nechám základ
Rada pro příště, doporučil bych pokud možno nemít víc než jedno přesměrovávací pravidlo.
Pravidla mod_rewrite jsou další syntaxe na naučení, ve větším počtu pravidel se špatně orientuje, blbě se to ladí a přitom jedna chyba může způsobit nefunkčnost celého webu.

Většinou stačí jedno pravidlo, které cokoliv (co není adresa existujícího souboru/adresáře) přesměruje na jeden PHP skript a řekne mu, jakou adresu návštěvník chtěl. A v tom skriptu si pak hezky v PHP můžu naprogramovat, co vlastně návštěvník dostane.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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

0