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
Форумы портала PHP.SU :: Версия для печати :: mod_rewrite + query_string
Форумы портала PHP.SU » PHP » Программирование на PHP » mod_rewrite + query_string

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

1. mike6 - 22 Мая, 2010 - 18:56:57 - перейти к сообщению
Добрый день,
подскажите как реализовать подстановку названия статьи (берем ее из базы) в строку броузера, а так же транслировать ее с крилициы на латиницу.

Спасибо.
2. JustUserR - 23 Мая, 2010 - 13:01:05 - перейти к сообщению
mike6 пишет:
Добрый день, подскажите как реализовать подстановку названия статьи (берем ее из базы) в строку броузера, а так же транслировать ее с крилициы на латиницу
Вы можете поступить следующим образом а именно составить в файле .htaccess шаблон <Files> для перезаписываемых путей - и внутри него объявить MIME-тип данных файлов и для них сделать директиву Action которая будет пердавать обработку в определенный CGI-скрипт - а далее в CGI-скрипте вы получаете переменную окружения PATH_INFO с соответствующим путем который ввел пользователя и можете делать любую дальнейшую сложную обработку
3. mike6 - 23 Мая, 2010 - 13:12:24 - перейти к сообщению
Неужели никто не задавался таким вопросом ?
Пока смотрю в сторону конструкции:

http://site[dot]ru/article/novaja_statja[dot]html

RewriteRule ^article/([0-9-A-Za-z]+)\.html$ /article.php&name=$1 [NC,L]

В базу подставляется novaja_statja, срезаем все лишнии символы кроме нижнего подчеркивания, приводим к нижнему регистру и собственно ищем.

Скорее всего предется создавать еще одно поле, в котором и будет храниться название на латинице, или же конвертировать на лету это.

Что думаете господа эксперты?
4. JustUserR - 23 Мая, 2010 - 13:42:06 - перейти к сообщению
mike6 пишет:
Неужели никто не задавался таким вопросом ?
Пока смотрю в сторону конструкции
А чем вас не устраивает вариант с промежуточным CGI-скриптом - ведь возможности по обработке строки в Perl-скрипте значительно лучше чем во встроенном в .htaccess механизме Кроме того вы сразу получаете возможность для шаблонизации
5. mike6 - 23 Мая, 2010 - 14:05:02 - перейти к сообщению
JustUserR не могли бы Вы рабочий пример показать.
А то с перлом не настолько сильно дружу.
6. JustUserR - 23 Мая, 2010 - 17:19:49 - перейти к сообщению
mike6 пишет:
JustUserR не могли бы Вы рабочий пример показать.
А то с перлом не настолько сильно дружу.
Я могу показать какие директивы .htaccess и какой CGI-скрипт я примерно имел в виду В файле .htaccess необходимо прописать директирию для которой будет осущесвляться обработка
CODE (text):
скопировать код в буфер обмена
  1.  
  2. <Directory /acticles>
  3. AddType application/x-perl-parsing .non-excisting-ext
  4. ForceType application/x-perl-parsing
  5. Action application/x-perl-parsing /path/to/perl-script.cgi
  6. </Directory>
И сам CGI-скрипт на пути /path/to/perl-script.cgi в принципе может быть обычным PHP-скриптом и выглядеть так
CODE (php):
скопировать код в буфер обмена
  1. #!/usr/bin/php
  2. $quered_path=$_SERVER['PATH_INFO']; // Путь который запросил пользователь
7. mike6 - 24 Мая, 2010 - 14:45:58 - перейти к сообщению
Благодарю коллега. Буду пробовать.
8. JustUserR - 24 Мая, 2010 - 15:31:54 - перейти к сообщению
mike6 пишет:
Благодарю коллега. Буду пробовать.
На здоровье - пробуйте Также отмечу что Apache поддерживает цепочки обработчиков Action для ресурсов с различным MIME-типом - поэтому даже если у вас имееются обычный PHP-скрипт который обрабатывается PHP-интерпретатором как CGI-скриптом то такая схема будет также работать - сначала Apache найдет обраотчик для указанного нами типа файлов а потом увидит что он также является не исполнемым и продолжит вызов по цепочке

 

Powered by ExBB FM 1.0 RC1