Autor Zpráva
Báža
Profil *
Mám menší problém, zřejmě pramenící z nedostatečné znalosti regulárních výrazů. Problém je tenhle: potřebuju do adresy přidat proměnnou třeba "promenna" s hodnotou dejme tomu "hodnota", ale jen v případě, že tam dosud není. Zkoušel jsem tohle:


RewriteEngine On
RewriteCond %{QUERY_STRING} ^$
RewriteCond ^stranka.php$ stranka.php?promenna=hodnota [R,QSA]


Jenže to funguje jen když v adrese nejsou vůbec žádné proměnné. Jak to udělat, aby se tam ta proměnná přidala i když tam budou třeba 3 další?
Dík.
BaTeCzKo
Profil
Zapis:
========

RewriteEngine On
RewriteRule ^str-(.*)\.html$ x.php?id=$1 [L,QSA]


Vysvetleni:
============

(.*) - zastupuje jakekoliv znaky a vytvari promennou $x podle poradi,
ve kterem se v zapisu nachazi (od promenne $1 vyse)

str - pritomnost tohoto klicoveho slova zajistuje aplikaci pravidla

.html - stejne jako klicove slovo vyse; urcuje klicovou priponu

x.php - soubor ktery je pri splneni podminky volan a jsou mu predavany
pripadne promenne

[L,QSA] - toto pravdepodobne zamezuje zacykleni pravidla, radeji to tam nechat
Báža
Profil *
Tohle znám, používám to taky. Tady jde o něco jiného. Mohl bych to sice vypodmínkovat v PHP, ale přes mod_rewrite mi to přijde jednodušší: potřebuju prostě přidat řídící proměnnou, podle které se pak nějakým způsobem bude provádět skript. Problém je ten, že v té adrese prostě být nemusí a pak by se ten skript zpracoval špatně. Snad už mi všichni rozumí. :-)
BaTeCzKo
Profil
Kde ta proměnná nebude? Při otevírání adresy, na jejímž základě mod rewrite podstrkuje nebo přímo na tom indexu?
Báža
Profil *
Proměnná nebude přítomna při otevírání téadresy.
Báža
Profil *
Ještě jsem zkoušel tenhle regulár:


RewriteCond %{QUERY_STRING} ^(.*)(promenna){0}(.*)$

, ten ale dělá divný věci. myslel jsem si, že se vyhodnotí jako true když v QS nebude žádný výskyt řetězce promenna, ale ouha, ono to tam následně v RewriteRule nacpalo tu proměnnou asi stokrát.
Prostě jde o vytvoření reguláru, kterej bude true, když v něm nebude řetězec promenna, to je celej problém (a doufám, že je řešitelnej :-) ).
Toto téma je uzamčeno. Odpověď nelze zaslat.

0