.htaccess datum (mod_rewrite)
3 naročniki
3 naročniki
V .htaccess datoteki želim brati datum. Ker so pravilne številke le na intervalu od 01-31 me zanima, kako se to zapiše v RegExp. Sam sem naredil to varianto z ... [0-3][0-9] ..., vendar se lahko v tem stringu pojavi tudi datum 00, 32, 33, 34, ... in 39.
Hvala za pomoč.
4 odgovori
Tega z regular expressions ne mores narediti, bos moral v kodi preverjati pravilnost datuma in tam po potrebi prikazovati 404. Zelo "na seljaka" bi pa to lahko naredil z ([0-2][0-9]|3[01]), vendar to se vedno dopusca recimo 00, kar bi naceloma spet lahko resil s se malo bolj butastim regexpom, nikakor pa ne resis problema z meseci, ki imajo razlicno stevilo dni, torej bos moral pravilnost datuma se vedno preverjati v kodi, pa je vprasanje, ce je smotrno s cimerkoli prevec komplicirati v regexpu.
Oglej si: klik. Pametno pa je da v kolikor več takih "regexov" delaš, da si dobiš regex editor... kjer lahko preizkusiš regex med popravljanjem :)
Zanima me, ali je s to .htaccess datoteko vse v redu? Stvar deluje tako kot mora, ampak se bojim, da morda preveč redirecta? Se jo da mogoče kako optimizirati?
RewriteEngine On
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ http://www.domenaxyz.si/rewrite/$1/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/$ /rewrite/category.php?cat=$1 [L]
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/$ /rewrite/post.php?cat=$1&date=$2&post=$3 [L]