Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Помогите с RewriteRule

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Anguis
Отправлено: 19 Мая, 2013 - 09:38:46
Post Id



Частый гость


Покинул форум
Сообщений всего: 253
Дата рег-ции: Июнь 2012  


Помог: 2 раз(а)




htacess :
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. RewriteEngine on
  3. RewriteBase /
  4.  
  5. RewriteCond %{HTTP_HOST} ^site.org
  6. RewriteRule (.*) http://www.site.org/$1 [R=301,L]
  7.  
  8. RewriteCond %{REQUEST_FILENAME} !-f
  9. RewriteRule ^(.*)$ /index.php
  10.  


Нужно добавить правило, что-бы любую ссылку в которой содержится request направило на /request
например site.org/user/1/request -> site.org/request site.org/user/1?request -> site.org/request

Вроде тривиальная задача, но бьюсь уже второй день. Большинство манипуляций вроде RewriteRule ^.*request.*$ /request либо ни как не работают, либо приводят к зацикливанию с internal server error
 
 Top
Anguis
Отправлено: 19 Мая, 2013 - 18:49:24
Post Id



Частый гость


Покинул форум
Сообщений всего: 253
Дата рег-ции: Июнь 2012  


Помог: 2 раз(а)




ну неужели ни кто не в курсе?
 
 Top
KingStar
Отправлено: 19 Мая, 2013 - 19:02:24
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


Помог: 69 раз(а)




CODE (htmlphp):
скопировать код в буфер обмена
  1. RewriteRule ^(.*)request /request [L]


-----
То что программа работает, не означает что она написана правильно!
 
 Top
Anguis
Отправлено: 19 Мая, 2013 - 19:11:55
Post Id



Частый гость


Покинул форум
Сообщений всего: 253
Дата рег-ции: Июнь 2012  


Помог: 2 раз(а)




KingStar, internal Server Error при запросе /request Зацикливается. Если поставить RewriteRule ^request - [L], то тогда все срабатывает, кроме RewriteRule ^(.*)$ /index.php
А это тоже важно. request должен обрабатывать index.php, как и любой другой запрос..
 
 Top
KingStar
Отправлено: 19 Мая, 2013 - 19:30:15
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


Помог: 69 раз(а)




Anguis пишет:
Если поставить RewriteRule ^request - [L], то тогда все срабатывает, кроме RewriteRule ^(.*)$ /index.php

интересно, как ты тогда хочешь чтобы обработал request и одновременно RewriteRule ^(.*)$ /index.php
(Добавление)
сделай редирект тогда на /request


-----
То что программа работает, не означает что она написана правильно!
 
 Top
Anguis
Отправлено: 19 Мая, 2013 - 19:40:15
Post Id



Частый гость


Покинул форум
Сообщений всего: 253
Дата рег-ции: Июнь 2012  


Помог: 2 раз(а)




примерно как-то так
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. RewriteRule ^request /index.php [L]
  3. RewriteRule ^(.*)request /request
  4.  
  5. RewriteCond %{REQUEST_FILENAME} !-f
  6. RewriteRule ^(.*)$ /index.php
  7.  


пурга какая-то получается Хм
(Добавление)
поясню для чего нужно. Сайт на комерческой cms с ЧПУ. Исходный htacess в первом посте. Установили дополнительный модуль, реализующий личный блог каждого зарегистрированного пользователя. Все урл на сайте в стиле site.org/path/to/page, урлы пользователей site.org/users/userid, а урлы блогов в новом модуле site.org/blog?id=userid а мне надо сделать что бы были /users/userid/blog
Может есть еще пути решения? Редирект не канает. Пользователь не должен видеть в браузере урлов типа site.org/blog?id=userid
 
 Top
Anguis
Отправлено: 20 Мая, 2013 - 07:59:17
Post Id



Частый гость


Покинул форум
Сообщений всего: 253
Дата рег-ции: Июнь 2012  


Помог: 2 раз(а)




up
Any ideas?
 
 Top
PHPLamer
Отправлено: 20 Мая, 2013 - 08:39:44
Post Id



Частый гость


Покинул форум
Сообщений всего: 171
Дата рег-ции: Сент. 2008  
Откуда: Russia, Krasnodar


Помог: 2 раз(а)




На мой взгляд тут можно поступить двумя способами:
1. Либо изменить код той части движка которая осуществляет навигацию.
2. Либо добавить соответствующее правило

CODE (htmlphp):
скопировать код в буфер обмена
  1. RewriteCond   %{REQUEST_FILENAME}       !-d
  2. RewriteCond   %{REQUEST_FILENAME}       !-f
  3. RewriteRule   ^(.*) site.org/blog?id=%{QUERY_STRING}


Немного затрудняюсь здесь
CODE (htmlphp):
скопировать код в буфер обмена
  1. RewriteCond   %{REQUEST_FILENAME}       !-d
  2. RewriteCond   %{REQUEST_FILENAME}       !-f

однако можно какую-то такую конструкцию навернуть
CODE (htmlphp):
скопировать код в буфер обмена
  1. RewriteCond    site.org/users/%{REQUEST_FILENAME}       !-d
  2. RewriteCond    site.org/users/%{REQUEST_FILENAME}       !-f
 
 Top
Anguis
Отправлено: 20 Мая, 2013 - 09:04:52
Post Id



Частый гость


Покинул форум
Сообщений всего: 253
Дата рег-ции: Июнь 2012  


Помог: 2 раз(а)




Нихт.
Загвоздка тут в том, что правила типа
CODE (htmlphp):
скопировать код в буфер обмена
  1. RewriteRule   ^(.*) site.org/blog?id=%{QUERY_STRING}

Отменяют правило
CODE (htmlphp):
скопировать код в буфер обмена
  1. RewriteRule ^(.*)$ /index.php

И запрос site.org/blog?id=userid уже не обрабатывается index.php
Код править не могу - cms комерческая, да и не хочу.
Пока единственный костыль который вижу, сделать отдельный обработчик для запроса
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. RewriteRule   ^(.*)blog request.php
  3.  

request.php
PHP:
скопировать код в буфер обмена
  1.  
  2. readfile('site.org/blog?id='.preg_replace('~.*/(.*)/?$~U','\1',$_SERVER['REQUEST_URI']));
  3.  

Но он мне очень очень не нравится
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB