rewrite за профил ..

vasilev

Registered
здравейте ,
опитвам се да подкарам rewrite за профил на даден потребител :

Код:
RewriteRule ^([A-Za-z0-9_-]+)$ index.php?page=Profile&user=$1 [QSA,L]

работи но ако има точка или интервал в името .. не работи ..
ако сложа точка и интервал в израза в скобите пък началната страница не ми зарежда .
ако сложа .* - пак не ми зарежда .


става дума за http://domain.com/profile
 
при регистрация .. си избират каквото и да е потребителско име .

http://domain.com/test.demo
http://domain.com/demo%20test

в рула .. не знам как трябва да стане и слагам просто точка и итнервал :)

Код:
RewriteRule ^([A-Za-z0-9_-]+.+%20+)$ index.php?page=Profile&user=$1 [QSA,L]
RewriteRule ^([.*]+)$ index.php?page=Profile&user=$1 [QSA,L]
 
Първо трябва да провериш дали подадения път не е съществуващ файл тъй като намесваш и "." в правилото си.Тоест ако искаш допустимите диапазони от символи да са A-Z,a-z,0-9 и символи ".","-" , "_" и празно място :

Код:
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([\w\s.-]+)$ index.php?page=Profile&user=$1 [L]
 
така става ,
но се прецаква ако има променлива която се подава след потребителя :

domain.com/demokino?film_id=435234cc2913613ae46c93b54c402020
domain.com/demokino?film_id=435234cc2913613ae46c93b54c402020&date=2012-20-12 ...

е това film_id , date .. не се гетва , все едно не съм го подал .

Опитвам се да го направя пак с rewrite това но нещо не успявам ..
говоря да не е ?film_id .. а направо

domain.com/demo.kino/435234cc2913613ae46c93b54c402020/2012-20-12

винаги ми го прави с ?
 
Трябваше да започнеш с това, че имаш повече от един гет параметър.. така ще ти дам пример, ако са максимум тези, които си изборил как може да го направиш.Виждам, че film_id e md5 хеширано така, че винаги ще бъде 32 символа от букви и числа и датата ще бъде в този формат в който си я дал:

Код:
RewriteRule ^([\w\s.-]+)/([a-z\d]{32})/(\d{4}-\d{2}-\d{2})$ index.php?page=Profile&user=$1&film_id=$2&date=$3 [L]
RewriteRule ^([\w\s.-]+)/([a-z\d]{32})$ index.php?page=Profile&user=$1&film_id=$2 [L]
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([\w\s.-]+)$ index.php?page=Profile&user=$1 [L]

Така всичко ще бъде наред с :

site.com/dqdo.koleda
site.com/dqdo.koleda/435234cc2913613ae46c93b54c402020
site.com/dqdo.koleda/435234cc2913613ae46c93b54c402020/2012-20-12
 
ти си хакер бре човек :)
къде ги пише тези неща !

работи и долу горе схващам смисъла на rewrite ..

Понеже не можах да направя гет формата да препраща към /.../... а винаги има ?... я направих с post :)
така че е ок :)

благодаря отново !
 
Добре си се сетил да я направиш с POST, защото това е начина на пращане по GET метода чрез параметри, а те се пращат точно така за първи "?", за следващ "&" и т.н. А иначе за mod_rewrite има писано много с различни примери.Тук специалното нещо при правенето на правилото, са регулярните изрази, този измислен урл, който пиша е съставен изцяло от тях.
 

Горе