Linux за българи: Форуми

Linux секция за напреднали => Хардуерни и софтуерни проблеми => Темата е започната от: rat в Jan 04, 2005, 10:56



Титла: mod_rewrite
Публикувано от: rat в Jan 04, 2005, 10:56
Здравейте,
Възможно ли е въобще да се напише правило което да прави заместване на URL от типа :
site.com/new.php?id=10 към URL от типа :
site.com/index.php?id=10
Тоест искам да си запазя променливата която се предава в URL-то.
Опитах с
Примерен код
RewiteRule ^new\.com\?id=(.*)$  index.php?id=$1

и не се получава. Май този mod_rewrite e да пренаписваш само статични URL-та.
От оптите които направих ми се струва че не взима нищо което е след името на файла (или след "?").


Титла: mod_rewrite
Публикувано от: sdr в Jan 04, 2005, 12:33
Може и още как! Аз обаче правя обратното (статично към пхп) посредством
Примерен код
RewriteEngine on
RewriteRule   ^/(dl)/([1234567890]+)(\.?wml)?$        /v$1/index_dl.php?num=$2 [NC,L]
 

т.е. от /dl/123 правя /vdl/index_dl.php?num=123


Титла: mod_rewrite
Публикувано от: rat в Jan 04, 2005, 14:04
Така става но не е това идеята .
на мен ми трябва динамично ПХП към динамично ПХП.
Ако имам test.php?id=xx да стане index.php?id=xx
Където xx е променлива.


Титла: mod_rewrite
Публикувано от: sdr в Jan 04, 2005, 16:54
Примерен код

RewriteEngine on
RewriteRule   ^/test.php(.*)$        /index.php$1 [NC,L]


primerno?


Титла: mod_rewrite
Публикувано от: rat в Jan 04, 2005, 18:34
Да. Така става но все пак е неудобно защото $1 е всичко зад името на файла : test.php[?id=10&name=xxx]
$1=?id=10&name=xxx
По този начин на index.php ще предам всички параметри от старото УРЛ .
Аз бих искал да мога да си отсея само параметрите поотделно.
Ето каква е ситуацията:
Има връзки към моя сайт които вече не са валидни.Примерно има такива :
site.com/plans.php?id=xx
а вече трябва да са index.php?o=plans&id=xx
където xx=[1 : &]
Понеже не мога да пипам по чуждите сайтове реших да го направя с mod_rewrite.


Титла: mod_rewrite
Публикувано от: sdr в Jan 04, 2005, 20:35
Примерен код

RewriteEngine on
RewriteRule   ^/plans.php?(.*)$        /index.php?o=plans&$1 [NC,L]


Аз обичам да помагам но не отказвам и заплащане  :angry:


Титла: mod_rewrite
Публикувано от: rat в Jan 05, 2005, 11:10
Разбираемо е  :)
Ще свърши работа да кажеш че със сигурност е възоможно това нещо защото почвам да се съмнявам.

P.S.
Каква ти е цената за такова нещо ?


Титла: mod_rewrite
Публикувано от: sdr в Jan 05, 2005, 14:59
От както спрях да пия вече не мога да казвам "..ще черпиш бира.." вапроса е че след толкова много примери вече би трябвало и сам да се справиш


Титла: mod_rewrite
Публикувано от: sdr в Jan 10, 2005, 19:32
И както се оказа на края НЕ СЪМ БИЛ ПРАВ за което искренно се извинявам... оказа се че mod_rewrite не може да мачва в рекуеста, но може да го променя) Могат да се правят някви магии с CondRewrite но това вече е друг въпрос. Съжалявам ако съм те подвел да загубиш допълнително време в тестване


Титла: mod_rewrite
Публикувано от: CaBA в Jan 10, 2005, 20:12
RewriteCond (а не CondRewrite) ти е необходим, ако имаш повече от едно правило за пренаписване - за да не се пренапише един УРЛ от няколко правила.Това:
Цитат
site.com/new.php?id=10 към URL от типа :
site.com/index.php?id=10
става така
Примерен код
RewriteCond %{REQUEST_URI}  ^new.php
RewriteRule  ^new.php?id=(.*)   index.php?id=$1 [R]

Това:
Цитат
site.com/plans.php?id=xx
а вече трябва да са index.php?o=plans&id=xx

става така:
Примерен код
RewriteCond %{REQUEST_URI}   ^plans.php
RewriteRule  ^plans.php?(.*)     index.php?o=plans&$1 [R]

и т.н.