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

Програмиране => Web development => Темата е започната от: nov_chovek в Jan 08, 2010, 17:52



Титла: mod rewrite rule
Публикувано от: nov_chovek в Jan 08, 2010, 17:52
Здравейте, можел ида ми помогнете за следното mod_rewrite пренасочване:

искам от:

Код:
article.html?id=0

да пренасочвам към:

Код:
/directory-of-my-choice/

Уточнявам, че файла article.html вече не съществува.


Пробвах със следното:
Код:
RewriteRule ^article\.html\?id\=0$ /directory-of-my-choice/ [R=301,L]

но не се получава, плюе ми 404. МЕрси предварително


Титла: Re: mod rewrite rule
Публикувано от: neter в Jan 08, 2010, 17:56
Задал ли си AllowOverride за този VirtualHost да бъде All? .htaccess файл ли ползваш? Имаш ли ред RewriteEngine On в началото на този файл? .htaccess файлът може ли да се чете от сървъра? Сигурен ли си, че mod_rewrite е зареден? Кой файл се споменава в 404?


Титла: Re: mod rewrite rule
Публикувано от: nov_chovek в Jan 08, 2010, 18:39
0. правилото е в .htaccess в директорията на сайта (т.е. където беше article.html)
1.mod_rewrite работи
2. задал съм RewriteЕngine on
3. 404 казва "The requested URL /article.html was not found on this server."


Титла: Re: mod rewrite rule
Публикувано от: neter в Jan 08, 2010, 19:36
Не каза за AllowOverride дали е зададено на All, но да предположим, че е. Така устройва ли те
Код:
RewriteRule ^article.html /directory-of-my-choice/? [R=301,L]


Титла: Re: mod rewrite rule
Публикувано от: vm13 в Jan 08, 2010, 20:38
Код
GeSHi (Bash):
  1. RewriteRule ^article.html /directory-of-my-choice/ [QSA,R=301,L]

QSA автоматично добавя query string-a към новата дестинация


Титла: Re: mod rewrite rule
Публикувано от: nov_chovek в Jan 09, 2010, 11:43
момчета не става! Но проблема явно е в параметъра на articles.html т.е. аз не искам да пренасоча само articles.html , а искам точно articles.html?id=0  и articles?id=1. Точно тези двете и никои други. Четейки насам натам осъзнавам че май не става това. Вие как мислите?


Титла: Re: mod rewrite rule
Публикувано от: vm13 в Jan 09, 2010, 12:52
Основния проблем в твоя случай е, че чрез mod_rewrite искаш да прихванеш част от заявката, което няма как да стане директно. Решението е:

Код:
RewriteEngine On
RewriteCond %{REQUEST_URI} /article.html
RewriteCond %{QUERY_STRING} id=[0,1]
RewriteRule (.) /directory-of-my-choice/ [R=301,L]