Autor | Zpráva | ||
---|---|---|---|
wordik Profil * |
#1 · Zasláno: 6. 5. 2014, 16:49:16
Při zpracování BB značek došlo k samovolnému sežrání celého příspěvku. Pardon.
Dobrý den, Dočetl jsem, že se špatně nastavená rewrite pravila a hlavně pravidla ve větším množstvím mohou značně ovlivnit rychlost načítání stránek, která není bůh ví jaká. Vím že tento .htaccess soubor je asi prasárna, ale při jeho tvorbě jsem se to snažil zjednodušit, především tu střední část, ovšem nepodařilo se mi to nastavit tak, abych zachoval funkčnost. Mohl bych tedy poprosit nějakého odborníka, aby se na tyto pravidla podíval a poradil, jak je mohu zjednodušit? Děkuji předem za pomoc. [pre] RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} -d [OR] RewriteCond %{REQUEST_FILENAME} -f RewriteRule .* - [L,QSA] # faktura RewriteRule moje-objednavky/([_a-zA-Z0-9\-]+)/faktura?$ shared/resources/scripts/php/invoice.php?v1=$1 [L,QSA] # newsletter RewriteRule newsletter/([_a-zA-Z0-9\-]+)/([_a-zA-Z0-9\-]+)/([_a-zA-Z0-9\-]+)/?$ index.php?v1=$1&v2=$2&v3=$3 [L,QSA] # ################## VYHLEDÁVÁNÍ # vyhledávání filtry # vyhledávání filtr 6. RewriteRule vyhledavani/([_a-zA-Z0-9\-]+)/zbozi-na-stranku/([_a-zA-Z0-9\-]+)/zobrazeni/([_a-zA-Z0-9\-]+)/razeni/([_a-zA-Z0-9\-]+)/znacka/([_a-zA-Z0-9\-]+)/barva/([_a-zA-Z0-9\-]+)/strana/([_a-zA-Z0-9\-]+)/?$ index.php?v1=$1&v2=$2&v3=$3&v4=$4&v5=$5&v6=$6&v7=$7 [L,QSA] # vyhledávání filtr 5. RewriteRule vyhledavani/([_a-zA-Z0-9\-]+)/zbozi-na-stranku/([_a-zA-Z0-9\-]+)/zobrazeni/([_a-zA-Z0-9\-]+)/razeni/([_a-zA-Z0-9\-]+)/znacka/([_a-zA-Z0-9\-]+)/strana/([_a-zA-Z0-9\-]+)/?$ index.php?v1=$1&v2=$2&v3=$3&v4=$4&v5=$5&v6=$6 [L,QSA] # vyhledávání filtr 4. RewriteRule vyhledavani/([_a-zA-Z0-9\-]+)/zbozi-na-stranku/([_a-zA-Z0-9\-]+)/zobrazeni/([_a-zA-Z0-9\-]+)/razeni/([_a-zA-Z0-9\-]+)/strana/([_a-zA-Z0-9\-]+)/?$ index.php?v1=$1&v2=$2&v3=$3&v4=$4&v5=$5 [L,QSA] # vyhledávání filtr 3. # zboží na stránku RewriteRule vyhledavani/([_a-zA-Z0-9\-]+)/zbozi-na-stranku/([_a-zA-Z0-9\-]+)/zobrazeni/([_a-zA-Z0-9\-]+)/razeni/([_a-zA-Z0-9\-]+)/?$ index.php?v1=$1&v2=$2&v3=$3&v4=$4 [L,QSA] RewriteRule vyhledavani/([_a-zA-Z0-9\-]+)/zbozi-na-stranku/([_a-zA-Z0-9\-]+)/zobrazeni/([_a-zA-Z0-9\-]+)/znacka/([_a-zA-Z0-9\-]+)/?$ index.php?v1=$1&v2=$2&v3=$3&v4=$4 [L,QSA] RewriteRule vyhledavani/([_a-zA-Z0-9\-]+)/zbozi-na-stranku/([_a-zA-Z0-9\-]+)/zobrazeni/([_a-zA-Z0-9\-]+)/barva/([_a-zA-Z0-9\-]+)/?$ index.php?v1=$1&v2=$2&v3=$3&v4=$4 [L,QSA] RewriteRule vyhledavani/([_a-zA-Z0-9\-]+)/zbozi-na-stranku/([_a-zA-Z0-9\-]+)/zobrazeni/([_a-zA-Z0-9\-]+)/strana/([_a-zA-Z0-9\-]+)/?$ index.php?v1=$1&v2=$2&v3=$3&v4=$4 [L,QSA] RewriteRule vyhledavani/([_a-zA-Z0-9\-]+)/zbozi-na-stranku/([_a-zA-Z0-9\-]+)/razeni/([_a-zA-Z0-9\-]+)/strana/([_a-zA-Z0-9\-]+)/?$ index.php?v1=$1&v2=$2&v3=$3&v4=$4 [L,QSA] RewriteRule vyhledavani/([_a-zA-Z0-9\-]+)/zbozi-na-stranku/([_a-zA-Z0-9\-]+)/znacka/([_a-zA-Z0-9\-]+)/strana/([_a-zA-Z0-9\-]+)/?$ index.php?v1=$1&v2=$2&v3=$3&v4=$4 [L,QSA] RewriteRule vyhledavani/([_a-zA-Z0-9\-]+)/zbozi-na-stranku/([_a-zA-Z0-9\-]+)/barva/([_a-zA-Z0-9\-]+)/strana/([_a-zA-Z0-9\-]+)/?$ index.php?v1=$1&v2=$2&v3=$3&v4=$4 [L,QSA] # zobrazení RewriteRule vyhledavani/([_a-zA-Z0-9\-]+)/zobrazeni/([_a-zA-Z0-9\-]+)/razeni/([_a-zA-Z0-9\-]+)/strana/([_a-zA-Z0-9\-]+)/?$ index.php?v1=$1&v2=$2&v3=$3&v4=$4 [L,QSA] RewriteRule vyhledavani/([_a-zA-Z0-9\-]+)/zobrazeni/([_a-zA-Z0-9\-]+)/znacka/([_a-zA-Z0-9\-]+)/strana/([_a-zA-Z0-9\-]+)/?$ index.php?v1=$1&v2=$2&v3=$3&v4=$4 [L,QSA] RewriteRule vyhledavani/([_a-zA-Z0-9\-]+)/zobrazeni/([_a-zA-Z0-9\-]+)/barva/([_a-zA-Z0-9\-]+)/strana/([_a-zA-Z0-9\-]+)/?$ index.php?v1=$1&v2=$2&v3=$3&v4=$4 [L,QSA] # řazení RewriteRule vyhledavani/([_a-zA-Z0-9\-]+)/razeni/([_a-zA-Z0-9\-]+)/zobrazeni/([_a-zA-Z0-9\-]+)/strana/([_a-zA-Z0-9\-]+)/?$ index.php?v1=$1&v2=$2&v3=$3&v4=$4 [L,QSA] RewriteRule vyhledavani/([_a-zA-Z0-9\-]+)/razeni/([_a-zA-Z0-9\-]+)/znacka/([_a-zA-Z0-9\-]+)/strana/([_a-zA-Z0-9\-]+)/?$ index.php?v1=$1&v2=$2&v3=$3&v4=$4 [L,QSA] RewriteRule vyhledavani/([_a-zA-Z0-9\-]+)/razeni/([_a-zA-Z0-9\-]+)/barva/([_a-zA-Z0-9\-]+)/strana/([_a-zA-Z0-9\-]+)/?$ index.php?v1=$1&v2=$2&v3=$3&v4=$4 [L,QSA] # značka RewriteRule vyhledavani/([_a-zA-Z0-9\-]+)/znacka/([_a-zA-Z0-9\-]+)/barva/([_a-zA-Z0-9\-]+)/strana/([_a-zA-Z0-9\-]+)/?$ index.php?v1=$1&v2=$2&v3=$3&v4=$4 [L,QSA] # vyhledávání filtr 2. # zboží na stránku RewriteRule vyhledavani/([_a-zA-Z0-9\-]+)/zbozi-na-stranku/([_a-zA-Z0-9\-]+)/zobrazeni/([_a-zA-Z0-9\-]+)/?$ index.php?v1=$1&v2=$2&v3=$3 [L,QSA] RewriteRule vyhledavani/([_a-zA-Z0-9\-]+)/zbozi-na-stranku/([_a-zA-Z0-9\-]+)/razeni/([_a-zA-Z0-9\-]+)/?$ index.php?v1=$1&v2=$2&v3=$3 [L,QSA] RewriteRule vyhledavani/([_a-zA-Z0-9\-]+)/zbozi-na-stranku/([_a-zA-Z0-9\-]+)/znacka/([_a-zA-Z0-9\-]+)/?$ index.php?v1=$1&v2=$2&v3=$3 [L,QSA] RewriteRule vyhledavani/([_a-zA-Z0-9\-]+)/zbozi-na-stranku/([_a-zA-Z0-9\-]+)/barva/([_a-zA-Z0-9\-]+)/?$ index.php?v1=$1&v2=$2&v3=$3 [L,QSA] RewriteRule vyhledavani/([_a-zA-Z0-9\-]+)/zbozi-na-stranku/([_a-zA-Z0-9\-]+)/strana/([_a-zA-Z0-9\-]+)/?$ index.php?v1=$1&v2=$2&v3=$3 [L,QSA] # zobrazení RewriteRule vyhledavani/([_a-zA-Z0-9\-]+)/zobrazeni/([_a-zA-Z0-9\-]+)/razeni/([_a-zA-Z0-9\-]+)/?$ index.php?v1=$1&v2=$2&v3=$3 [L,QSA] RewriteRule vyhledavani/([_a-zA-Z0-9\-]+)/zobrazeni/([_a-zA-Z0-9\-]+)/znacka/([_a-zA-Z0-9\-]+)/?$ index.php?v1=$1&v2=$2&v3=$3 [L,QSA] RewriteRule vyhledavani/([_a-zA-Z0-9\-]+)/zobrazeni/([_a-zA-Z0-9\-]+)/barva/([_a-zA-Z0-9\-]+)/?$ index.php?v1=$1&v2=$2&v3=$3 [L,QSA] RewriteRule vyhledavani/([_a-zA-Z0-9\-]+)/zobrazeni/([_a-zA-Z0-9\-]+)/strana/([_a-zA-Z0-9\-]+)/?$ index.php?v1=$1&v2=$2&v3=$3 [L,QSA] # řazení RewriteRule vyhledavani/([_a-zA-Z0-9\-]+)/razeni/([_a-zA-Z0-9\-]+)/strana/([_a-zA-Z0-9\-]+)/?$ index.php?v1=$1&v2=$2&v3=$3 [L,QSA] RewriteRule vyhledavani/([_a-zA-Z0-9\-]+)/razeni/([_a-zA-Z0-9\-]+)/znacka/([_a-zA-Z0-9\-]+)/?$ index.php?v1=$1&v2=$2&v3=$3 [L,QSA] RewriteRule vyhledavani/([_a-zA-Z0-9\-]+)/razeni/([_a-zA-Z0-9\-]+)/barva/([_a-zA-Z0-9\-]+)/?$ index.php?v1=$1&v2=$2&v3=$3 [L,QSA] # značka RewriteRule vyhledavani/([_a-zA-Z0-9\-]+)/znacka/([_a-zA-Z0-9\-]+)/barva/([_a-zA-Z0-9\-]+)/?$ index.php?v1=$1&v2=$2&v3=$3 [L,QSA] RewriteRule vyhledavani/([_a-zA-Z0-9\-]+)/znacka/([_a-zA-Z0-9\-]+)/strana/([_a-zA-Z0-9\-]+)/?$ index.php?v1=$1&v2=$2&v3=$3 [L,QSA] # barva RewriteRule vyhledavani/([_a-zA-Z0-9\-]+)/barva/([_a-zA-Z0-9\-]+)/strana/([_a-zA-Z0-9\-]+)/?$ index.php?v1=$1&v2=$2&v3=$3 [L,QSA] # vyhledávání filtr 1. RewriteRule vyhledavani/([_a-zA-Z0-9\-]+)/zbozi-na-stranku/([_a-zA-Z0-9\-]+)/?$ index.php?v1=$1&v2=$2 [L,QSA] RewriteRule vyhledavani/([_a-zA-Z0-9\-]+)/zobrazeni/([_a-zA-Z0-9\-]+)/?$ index.php?v1=$1&v2=$2 [L,QSA] RewriteRule vyhledavani/([_a-zA-Z0-9\-]+)/razeni/([_a-zA-Z0-9\-]+)/?$ index.php?v1=$1&v2=$2 [L,QSA] RewriteRule vyhledavani/([_a-zA-Z0-9\-]+)/znacka/([_a-zA-Z0-9\-]+)/?$ index.php?v1=$1&v2=$2 [L,QSA] RewriteRule vyhledavani/([_a-zA-Z0-9\-]+)/barva/([_a-zA-Z0-9\-]+)/?$ index.php?v1=$1&v2=$2 [L,QSA] RewriteRule vyhledavani/([_a-zA-Z0-9\-]+)/strana/([_a-zA-Z0-9\-]+)/?$ index.php?v1=$1&v2=$2 [L,QSA] # vyhledávání RewriteRule vyhledavani/([_a-zA-Z0-9\-]+)/?$ index.php?v1=$1 [L,QSA] # ################## VYHLEDÁVÁNÍ # ################## PODKATEGORIE 1 / PODKATEGORIE 2 - FILTRY # podkategorie 2 3.filtr RewriteRule kategorie/([_a-zA-Z0-9\-]+)/([_a-zA-Z0-9\-]+)/([_a-zA-Z0-9\-]+)/([_a-zA-Z0-9\-]+)/([_a-zA-Z0-9\-]+)/([_a-zA-Z0-9\-]+)?$ index.php?v1=$1&v2=$2&v3=$3&v4=$4&v5=$5&v6=$6 [L,QSA] RewriteRule kategorie/([_a-zA-Z0-9\-]+)/([_a-zA-Z0-9\-]+)/([_a-zA-Z0-9\-]+)/([_a-zA-Z0-9\-]+)/([_a-zA-Z0-9\-]+)/([_a-zA-Z0-9\-]+)?$ index.php?v1=$1&v2=$2&v3=$3&v4=$4&v5=$5&v6=$6 [L,QSA] RewriteRule kategorie/([_a-zA-Z0-9\-]+)/([_a-zA-Z0-9\-]+)/([_a-zA-Z0-9\-]+)/([_a-zA-Z0-9\-]+)/([_a-zA-Z0-9\-]+)/([_a-zA-Z0-9\-]+)?$ index.php?v1=$1&v2=$2&v3=$3&v4=$4&v5=$5&v6=$6 [L,QSA] # podkategorie 2 2.filtr + podkategorie 1 3.filtr RewriteRule kategorie/([_a-zA-Z0-9\-]+)/([_a-zA-Z0-9\-]+)/([_a-zA-Z0-9\-]+)/([_a-zA-Z0-9\-]+)/([_a-zA-Z0-9\-]+)?$ index.php?v1=$1&v2=$2&v3=$3&v4=$4&v5=$5 [L,QSA] RewriteRule kategorie/([_a-zA-Z0-9\-]+)/([_a-zA-Z0-9\-]+)/([_a-zA-Z0-9\-]+)/([_a-zA-Z0-9\-]+)/([_a-zA-Z0-9\-]+)?$ index.php?v1=$1&v2=$2&v3=$3&v4=$4&v5=$5 [L,QSA] RewriteRule kategorie/([_a-zA-Z0-9\-]+)/([_a-zA-Z0-9\-]+)/([_a-zA-Z0-9\-]+)/([_a-zA-Z0-9\-]+)/([_a-zA-Z0-9\-]+)?$ index.php?v1=$1&v2=$2&v3=$3&v4=$4&v5=$5 [L,QSA] # podkategorie 2 1.filtr + podkategorie 1 1. a 2.filtr RewriteRule kategorie/([_a-zA-Z0-9\-]+)/([_a-zA-Z0-9\-]+)/([_a-zA-Z0-9\-]+)/([_a-zA-Z0-9\-]+)?$ index.php?v1=$1&v2=$2&v3=$3&v4=$4 [L,QSA] RewriteRule kategorie/([_a-zA-Z0-9\-]+)/([_a-zA-Z0-9\-]+)/([_a-zA-Z0-9\-]+)/([_a-zA-Z0-9\-]+)?$ index.php?v1=$1&v2=$2&v3=$3&v4=$4 [L,QSA] RewriteRule kategorie/([_a-zA-Z0-9\-]+)/([_a-zA-Z0-9\-]+)/([_a-zA-Z0-9\-]+)/([_a-zA-Z0-9\-]+)?$ index.php?v1=$1&v2=$2&v3=$3&v4=$4 [L,QSA] RewriteRule kategorie/([_a-zA-Z0-9\-]+)/([_a-zA-Z0-9\-]+)/([_a-zA-Z0-9\-]+)?$ index.php?v1=$1&v2=$2&v3=$3 [L,QSA] RewriteRule kategorie/([_a-zA-Z0-9\-]+)/([_a-zA-Z0-9\-]+)/([_a-zA-Z0-9\-]+)?$ index.php?v1=$1&v2=$2&v3=$3 [L,QSA] RewriteRule kategorie/([_a-zA-Z0-9\-]+)/([_a-zA-Z0-9\-]+)/([_a-zA-Z0-9\-]+)?$ index.php?v1=$1&v2=$2&v3=$3 [L,QSA] # ################## PODKATEGORIE 1 / PODKATEGORIE 2 - FILTRY # ################## PODKATEGORIE 2 # ### podkategorie 2 + detail zboží RewriteRule kategorie/([_a-zA-Z0-9\-]+)/([_a-zA-Z0-9\-]+)/([_a-zA-Z0-9\-]+)/zbozi/([_a-zA-Z0-9\-]+)/([_a-zA-Z0-9\-]+)/?$ index.php?v1=$1&v2=$2&v3=$3&v4=$4&v5=$5 [L,QSA] # ### podkategorie 2 RewriteRule kategorie/([_a-zA-Z0-9\-]+)/([_a-zA-Z0-9\-]+)/([_a-zA-Z0-9\-]+)/?$ index.php?v1=$1&v2=$2&v3=$3 [L,QSA] # ################## PODKATEGORIE 2 # ################## PODKATEGORIE 1 # ### podkategorie 1 + detail zboží RewriteRule kategorie/([_a-zA-Z0-9\-]+)/([_a-zA-Z0-9\-]+)/zbozi/([_a-zA-Z0-9\-]+)/([_a-zA-Z0-9\-]+)/?$ index.php?v1=$1&v2=$2&v3=$3&v4=$4 [L,QSA] # ### podkategorie 1 RewriteRule kategorie/([_a-zA-Z0-9\-]+)/([_a-zA-Z0-9\-]+)/?$ index.php?v1=$1&v2=$2 [L,QSA] # ################## PODKATEGORIE 1 # ################## KATEGORIE # ### kategorie + detail zboží RewriteRule kategorie/([_a-zA-Z0-9\-]+)/zbozi/([_a-zA-Z0-9\-]+)/([_a-zA-Z0-9\-]+)/?$ index.php?v1=$1&v2=$2&v3=$3 [L,QSA] # ### kategorie RewriteRule kategorie/([_a-zA-Z0-9\-]+)/?$ index.php?v1=$1 [L,QSA] |
||
Davex Profil |
#2 · Zasláno: 6. 5. 2014, 18:42:30
|
||
wordik Profil * |
#3 · Zasláno: 6. 5. 2014, 23:19:27
To vypadá dobře, jenže já teď například využívám url ve tvaru:
domena.cz/vyhledavani/blablabla s tím že vyhledavani neni parametr, to bych musel celý zdrojový kód předělat, takových případů tam tam více. No ale pokud není jiné řešení, pak mi asi nic jiného nezbývá. |
||
Časová prodleva: 1 měsíc
|
|||
wordik Profil * |
#4 · Zasláno: 6. 6. 2014, 13:57:17
Tak jsem se k tomu po delší době konečně dostal. Váš tip na řešení je super a vypadá to funčně, akorát jsme narazil na chybu, kterou si nedokážu vysvětlit a už mi to hlava asi 2 hodiny nebere. Pozn.: Z využítím předchozích rewrite pravidel viz první příspěvek vše fungovalo.
můj .htaccess vypadá nyní následovně: RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?url=$1 [L,QSA] do php jsem přidal: $url = explode('/', $_GET['url']); $_GET['v1'] = $url[0]; $_GET['v2'] = $url[1]; $_GET['v3'] = $url[2]; $_GET['v4'] = $url[3]; A nyní k mému problému, mám kód, který podle URL změní uživateli heslo. aktivační odkaz: http://www.mujweb.cz/zapomenute-heslo/potvrdit/464f29728761ddaa45c7311cc83ff532ac35c0e0/8m8TpT4f13F Nové heslo: f9be0f0e $existCheckQuery = mysql_query('SELECT `active` FROM `'.$mysql['database'].'`.`registered_users` WHERE `hash` = "'.mysql_real_escape_string($_GET['v3']).'" LIMIT 1'); $active = mysql_fetch_assoc($existCheckQuery); if (mysql_num_rows($existCheckQuery) == 1 && $active['active'] == 1) { mysql_query('UPDATE `'.$mysql['database'].'`.`registered_users` SET `password` = "'.SHA1(base62decode(mysql_real_escape_string($_GET['v4']))).'" WHERE `hash` = "'.mysql_real_escape_string($_GET['v3']).'" LIMIT 1'); echo 'Nové heslo: <span class="bold">',base62decode(mysql_real_escape_string($_GET['v4'])),'</span> bylo úspěšně aktivováno.'; } else { echo 'Zadaný uživatelský účet doposud nebyl aktivovaný.'; } Vše proběhne OK, vypíše to, že heslo f9be0f0e bylo nastaveno (tudíž heslo z URL správně dekoduje), ale když se podívám do databáze, tak SHA1 hash je jiný, než když heslo nastavím SHA1 manuálně v databázi. Chyba musí být v tom mod_rewrite, když vrátím zpátky ta pravidla, funguje to. Takže mě napadlo, nemůže tam být nějaký neviditelný znak, který se zaheshuje pomocí SHA1 spolu s heslem? |
||
Kajman Profil |
Při ukládání by měla být funkce mysql_real_escape_string použita až na výsledek SHA1(base62decode($_GET['v4'])). Ale nejsem si jistý, zda to způsobuje onen problém. Navíc pro escapování dat do html se nepoužívá mysql_real_escape_string ale htmlspecialchars, viz http://phpfashion.com/escapovani-definitivni-prirucka
Také je dobré heslo před hashováním osolit a přijde mi bezpečnější náhodné heslo vygenerovat až při potvrzení, než ho mít v url posílané e-mailem. A nezapomeňte si při změně hesla změnit i stav sloupce hash. |
||
wordik Profil * |
#6 · Zasláno: 6. 6. 2014, 15:11:43
Děkuji za vaše postřehy, vím, že ten skript není dokonalý, ovšem bohužel to nezpůsobuje můj problém, když dříve to šlo v pořádku.
Zkoušel jsem SQL dotaz upravit takto: `password` = "'.mysql_real_escape_string(SHA1(base62decode($_GET['v4']))).'" i mysql_real_escape_string úplně vyhodit a to také nepomohlo. Když si vypíšu parametry z URL pomocí echo jsou přesně takové jako v URL. Dokonce i když si vypíšu samotný SQL dotaz v php a následné ho spustím v phpmyadminovi, pak se hash hesla aktualizuje na správnou hodnotu, když ovšem kliknu zase na odkaz, změní se hash na nějaký jiný špatný. Zkoušel jsem dát i exit() ihned za ten SQL dotaz, abych se ujistil, že se nespustí nic jiného (i když nemá co) a stejně se to aktualizuje špatně. Tohle mi hlava nebere. |
||
Časová prodleva: 11 let
|
0