regex за htaccess

От: regex за htaccess

Пробвай със следните:

^www\.example\.com\/hello123\.5\.6\.7$
^www\.example\.com\/android5,3&\$#$

По-обхватен regex, който обхваща всички малки, големи букви и специални символи е следния:

^[a-zA-Z0-9!@#$%¨&*].+$

Ако го ползваш за .htaccess, може и да ползваш флага [NC] накрая, той оказва стринга да бъде case-insensitive. Можеш да си поиграеш със създаване на собствени regex-и през http://regex101.com , копираш стринга, създаваш regex според твоите изискванияи гледаш дали съвпада.
 
От: regex за htaccess

Пробвай със следните:

^www\.example\.com\/hello123\.5\.6\.7$
^www\.example\.com\/android5,3&\$#$

По-обхватен regex, който обхваща всички малки, големи букви и специални символи е следния:

^[a-zA-Z0-9!@#$%¨&*].+$

Ако го ползваш за .htaccess, може и да ползваш флага [NC] накрая, той оказва стринга да бъде case-insensitive. Можеш да си поиграеш със създаване на собствени regex-и през http://regex101.com , копираш стринга, създаваш regex според твоите изискванияи гледаш дали съвпада.

Да за .htaccess го ползвам, но не ми се получава нещо.
^[a-zA-Z0-9!@#$%¨&*].+$ дава ми грешка 404.
Аз съм направил това RewriteRule ^android/([^-]*) index.php?page=android&name=$1 [NC], но не ми приема специалните знаци.
Като го тествам с този tool хваща ми целия стринг пък при мен не ми го отваря.
 
От: От: regex за htaccess

Пробвай така:

RewriteRule ^.+?android[0-9!$%&#;&*].*$ index.php?page=android&name=$1 [NC]

Нямаш означена група, за да ползваш референция към нея, но и това няма да помогне в случая.

Аз съм направил това RewriteRule ^android/([^-]*) index.php?page=android&name=$1 [NC], но не ми приема специалните знаци.
Като го тествам с този tool хваща ми целия стринг пък при мен не ми го отваря.

Едно е да тестваш с инструмент за регекс шаблони, друго е да го прилагаш в конфигурационен файл на сървър.
Първо, така написано презаписващото правило няма да вземе под предвид query strings(гет параметрите) когато се използват специалните знаци "?" и "&" затова се ползва флага QSA
Второ, специален знак # hash и всичко след него не се праща към сървъра, това е работа на браузъра.
Трето, но не на последно място, твоето не знание да правиш такива безумни урл адреси води до усложняване задачата.
 
От: От: От: regex за htaccess

Нямаш означена група, за да ползваш референция към нея, но и това няма да помогне в случая.



Едно е да тестваш с инструмент за регекс шаблони, друго е да го прилагаш в конфигурационен файл на сървър.
Първо, така написано презаписващото правило няма да вземе под предвид query strings(гет параметрите) когато се използват специалните знаци "?" и "&" затова се ползва флага QSA
Второ, специален знак # hash и всичко след него не се праща към сървъра, това е работа на браузъра.
Трето, но не на последно място, твоето не знание да правиш такива безумни урл адреси води до усложняване задачата.

Ами с QSA пак не се получава всичко друго си ми отваря, но специалните знаци нещо не, какво ли вече непробвах?
Ами нов съм в тази сфера, нормално е да незнам.
Всъщност аз работя върху xampp, но мисля няма значение дали ще е на някой сървър или със xampp.
 
От: От: От: regex за htaccess

Ами с QSA пак не се получава всичко друго си ми отваря, но специалните знаци нещо не, какво ли вече непробвах?.

Какво имаш в предвид "не ми отваря" ? Ако искаш в гет параметъра "name" да попаднат специални знаци като "?", "&" "#" ще ти кажа, че няма да стане. За справка мога да дам следния адрес, подобен на този който си дал като пример в първия си пост: "www.example.com/android/5,3&$#"

Код:
RewriteRule ^android/([^-]*) index.php?page=android&name=$1 [NC,QSA,L]

Това ще мапне адреса index.php?page=android&name=android5,3&$ , където ще имаш три get параметъра "android", "name" и "$".

Първо си нормализирай адресите, които искаш да мапва.
 
Последно редактирано:
От: От: От: От: regex за htaccess

Какво имаш в предвид "не ми отваря" ? Ако искаш в гет параметъра "name" да попаднат специални знаци като "?", "&" "#" ще ти кажа, че няма да стане. За справка мога да дам следния адрес, подобен на този който си дал като пример в първия си пост: "www.example.com/android/5,3&$#"

Код:
RewriteRule ^android/([^-]*) index.php?page=android&name=$1 [NC,QSA,L]

Това ще мапне адреса index.php?page=android&name=android5,3&$ , където ще имаш три get параметъра "android", "name" и "$".

Първо си нормализирай адресите, които искаш да мапва.

Да не се изразявам както трябва имам впредвид, че заявката не се получава.
Да не би да не приема специалните знаци $id= mysql_real_escape_string($_GET["name"]); като ги прескача с escape_sctring?
Какво да направя ?
 
От: От: От: От: regex за htaccess

Да не се изразявам както трябва имам впредвид, че заявката не се получава.
Да не би да не приема специалните знаци $id= mysql_real_escape_string($_GET["name"]); като ги прескача с escape_sctring?
Какво да направя ?

Да се откажеш.
 

Горе