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 :: mod_rewrite

 PHP.SU

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


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

> Без описания
IOpeH
Отправлено: 11 Декабря, 2008 - 21:53:58
Post Id



Частый гость


Покинул форум
Сообщений всего: 175
Дата рег-ции: Нояб. 2007  


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




бьюсь с mod_rewrite уже целый день, ничего только м не выходит

задача весьма простая:
http://localhost/aaa/
в
http://localhost/?page=aaa
это я сделал без проблем, но надо некоторые строки, например:
http://localhost/bbb/
оставались как есть
 
 Top
Champion Супермодератор
Отправлено: 12 Декабря, 2008 - 08:52:22
Post Id



Активный участник


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


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




"(expr1|expr2|expr3|expr4)" - преобразуем:
можно еще те, которые преобразовывать не надо задать правилом
"(Expr11|Expr12|Expr13)" - преобразуем в как и было
 
 Top
IOpeH
Отправлено: 12 Декабря, 2008 - 12:56:29
Post Id



Частый гость


Покинул форум
Сообщений всего: 175
Дата рег-ции: Нояб. 2007  


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




Тут самая попа в том, что никак не посмотреть пошагово результаты преобразований. Если кто знает как это сделать, подскажите пожалуйста.

Цитата:
"(Expr11|Expr12|Expr13)" - преобразуем в как и было

первая мысль была именно такой, но ничего не выходит из этогу путного (((

Нормальной объяснялки по этой теме ненайти (((

дальше я попытаюсь изложить эту тему как я ее понимаю, поправте пожалуйста, где неверно

есть такой адрес http://localhost/aaa/bbb/
в корне сайта лежит .htaccess тоесь http://localhost/[dot]htaccess
"RewriteBase /" - означает, что мы будем оперировать с "aaa/bbb/" этой частью урла, как я понял без слеша вначале
дальше
"RewriteRule ([^/]+)/$ ?page=$1" пробовал написать так "([^/]+)/?$", вылезает ошибка 500, так и не понял почему (дальше буду рассматривать вариант без вопросительно знака)
по данному правилу следует что
"aaa/bbb/" будет преобразовано в "aaa/?page=bbb". Или в "?page=bbb", по логике должен быть первый вариант, но по практике получается второй, опять же не понятно почему

... думаю надо покаа с этим разобраться, а потом ехать дальше
 
 Top
Champion Супермодератор
Отправлено: 12 Декабря, 2008 - 13:03:57
Post Id



Активный участник


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


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




IOpeH пишет:
Тут самая попа в том, что никак не посмотреть пошагово результаты преобразований.
А что вам мешает "сэмитировать" такое преобразование URLа? Можно ведь посмотреть корректность наблона просто вот так
$url = 'http://afs/as/ff/';
$rewrote = preg_replace('шаблон, который потом вы напишите в htaccess', $url ) ;
echo $rewrote;
 
 Top
IOpeH
Отправлено: 12 Декабря, 2008 - 13:39:13
Post Id



Частый гость


Покинул форум
Сообщений всего: 175
Дата рег-ции: Нояб. 2007  


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




в том то и дело что в пхп уже давно бы все траблы решил

В пхп
echo preg_replace('/([^\/]+)\/$/', '?page=\\1', 'aaa/bbb/');
получаю
aaa/?page=bbb

В апаче
RewriteRule ([^/]+)/$ ?page=$1
получаю
?page=bbb
это только предположительно, тк увидеть этот результат я не могу. Заметте "aaa/" кудато пропало.

(Отредактировано автором: 12 Декабря, 2008 - 13:40:00)

 
 Top
Champion Супермодератор
Отправлено: 12 Декабря, 2008 - 15:23:09
Post Id



Активный участник


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


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




ну увидеть результат вы можете. Сделайте в скрипте phpinfo() и увидите всё, что хотите (и переданные данные, и путь к скрипту...)
(Добавление)
Стоп, мотрите... ща допишу
(Добавление)
Вы пишете RewriteRule ([^/]+)/$ ?page=$1
URL такой aaa/bbb/.
Получается, он правильно преобразуется: $1 имеет значене как раз bbb...

А если RewriteRule ([^/]+/)?([^/]+)/$ $1?page=$2
 
 Top
IOpeH
Отправлено: 12 Декабря, 2008 - 16:53:02
Post Id



Частый гость


Покинул форум
Сообщений всего: 175
Дата рег-ции: Нояб. 2007  


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




в phpinfo не будет промежуточных вариантов преобразований (уже смотрел)
Цитата:
Вы пишете RewriteRule ([^/]+)/$ ?page=$1
URL такой aaa/bbb/.
Получается, он правильно преобразуется: $1 имеет значене как раз bbb...

а куда тогда девается тот кусок строки что не указан в реге? вот в этом неразбериха.
 
 Top
Champion Супермодератор
Отправлено: 12 Декабря, 2008 - 19:05:26
Post Id



Активный участник


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


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




IOpeH пишет:
в phpinfo не будет промежуточных вариантов преобразований
Там будет значение переменной page
IOpeH пишет:
а куда тогда девается тот кусок строки что не указан в реге
Точон не знаю
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Apache и другие веб-серверы »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB