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 :: Проблемы ЧПУ

 PHP.SU

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


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

> Без описания
denandi
Отправлено: 15 Ноября, 2010 - 11:37:04
Post Id


Новичок


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


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




Всем привет!
Извините если не там тему создал..
создал правило:
CODE (htmlphp):
скопировать код в буфер обмена
  1. http://www.site.ru/st/showpg.php?cat=13  (оригинал)
  2.  
  3. RewriteEngine On
  4. RewriteRule ^([^/]*)\.html$ /st/showpg.php?cat=$1 [L]
  5.  
  6. http://www.site.ru/13.html (результат)
  7.  


Не преобразовывает в адресной строке нужный мне адрес.
но если вбить в адресной стр.http://www[dot]site[dot]ru/13[dot]html - все переадресовывает как положено, на нужную стр.
С чем это может быть связано, почему нет изменений в адресной строке?
Спасибо.

(Отредактировано автором: 15 Ноября, 2010 - 11:37:29)

 
 Top
Uchkuma
Отправлено: 15 Ноября, 2010 - 11:53:24
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


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




Адрес преобразовывается на серверной стороне, а не в строке браузера.
 
 Top
denandi
Отправлено: 15 Ноября, 2010 - 12:18:21
Post Id


Новичок


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


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




Uchkuma пишет:
Адрес преобразовывается на серверной стороне, а не в строке браузера.

Понятно что на серверной. Почему первично не отображается результат в адресной строке?
Возможно где то ошибка, или не совсем понимаю суть...
Буду признателен за помощь в данном вопросе.
 
 Top
Uchkuma
Отправлено: 15 Ноября, 2010 - 12:23:11
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


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




Вы, наверное, перепутали с редиректом. В адресной строке ничего не должно меняться. Результатом вашего преобразования будет получение скриптом соответствующих параметров.
 
 Top
denandi
Отправлено: 15 Ноября, 2010 - 14:44:03
Post Id


Новичок


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


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




Uchkuma пишет:
Вы, наверное, перепутали с редиректом. В адресной строке ничего не должно меняться. Результатом вашего преобразования будет получение скриптом соответствующих параметров.


Прошу вас, вправить мне мозги, а то я основательно запутался!
Что такое ЧПУ? это.. "красивый адрес!"
CODE (htmlphp):
скопировать код в буфер обмена
  1. Это URL (родной) например: http://www.site.ru/st/showpg.php?cat=13
  2. мы создаем в хтакесе правило, при котором этот родной адрес становится, например таким:  http://www.site.ru/13.html


P.S. Правило сделал. Есть родной адрес. (А сама суть ЧПУ? где красивый адрес? Хорошо )

(Отредактировано автором: 15 Ноября, 2010 - 14:44:58)

 
 Top
Uchkuma
Отправлено: 15 Ноября, 2010 - 14:59:43
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


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




denandi пишет:
где красивый адрес?
Вот красивый адрес:
denandi пишет:
http://www.site.ru/13.html
 
 Top
denandi
Отправлено: 15 Ноября, 2010 - 18:25:58
Post Id


Новичок


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


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




Uchkuma пишет:
denandi пишет:
где красивый адрес?
Вот красивый адрес:
denandi пишет:
http://www.site.ru/13.html


Я наверное как то не так объясняю раз так пост растянулся... Простите!
Но именно этот адрес я стремлюсь воспроизвести у себя в адресной строке!!!
В данной ситуации - я имею неизменный - второй.
Как мне это исправить!?
 
 Top
Uchkuma
Отправлено: 15 Ноября, 2010 - 19:01:34
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


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




denandi пишет:
Но именно этот адрес я стремлюсь воспроизвести у себя в адресной строке!!!
Я никак не пойму вас, в чем проблема-то? Вбиваете в адресную строку красивый адрес http://www.site.ru/13.html, используете аналогичные ссылки на сайте. В скрипте showpg.php принимаете параметр $_GET['cat'], в соответствии с вашим правилом замены. Что не работает-то у вас?
(Добавление)
Какой бы вы адрес не указали, http://www[dot]site[dot]ru/st/showpg.php?cat=13 или http://www.site.ru/13.html, то в адресной строке он таким и останется. Еще раз говорю, это не переадресация с одного адреса на другой. Это преобразование url. И производится оно на серверной стороне, а не на клиентской.
Грубо говоря, в адресе вы вбиваете http://www.site.ru/13.html, а скрипт его принимает уже преобразованным, т.е. таким: http://www.site.ru/st/showpg.php?cat=13.
 
 Top
denandi
Отправлено: 15 Ноября, 2010 - 19:59:12
Post Id


Новичок


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


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




Цитата:
Вбиваете в адресную строку красивый адрес http://www.site.ru/13.html

Ох.. Зачем??? Зачем вбивать мне адреса???
Если я например хочу сделать так что бы у меня весь каталог который реализуется средствами php и имеет на сайте динамические адреса типа:
CODE (htmlphp):
скопировать код в буфер обмена
  1. /catalog/index.php?per=12&page=4

стал более упрощенным.. Это означает, что любой человек пришедший на этот сайт не увидит таких адресов в каталоге, как например этот:
CODE (htmlphp):
скопировать код в буфер обмена
  1. /catalog/index.php?per=12&page=4

а увидит ЧПУ_шные т.е например такие:
/catalog/per/12/4/

Подведем итог всего поста неочем:
я хочу что бы у меня на сайте люди видели такие адреса: /per/12/4/
но никак не такие: ?per=12&page=4
В самом верху постов я дал свое пробное решение. Оно не работает должным образом. А именно все видят теже самые адреса ?per=12&page=4
Вот я и спросил у вас – что я сделал не так? В чем ошибка?
 
 Top
Uchkuma
Отправлено: 15 Ноября, 2010 - 20:12:59
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


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




А вы хотели, чтобы волшебным образом изменились все ссылки на ваших страницах?
Теперь понятно, что вы имели ввиду.
Все правильно. Частично вы реализовали механизм ЧПУ с помощью mod_rewrite. Но скрипт каталога по прежнему генерирует некрасивые адреса. Ему-то откуда знать, что ссылки в генерируемом html-коде надо переделывать?
Решение, которое вам можно предложить, зависит от того, как скрипт выводит ссылки.
Например, если в скрипте ссылки генерируются подобным образом:
PHP:
скопировать код в буфер обмена
  1. echo '<a href="/index.php?cat='.$id_cat.'">Категория 13<a>'
то можно внести соответствующие изменения в этот скрипт, т.е. сделать так:
PHP:
скопировать код в буфер обмена
  1. echo '<a href="/'.$id_cat.'.html">Категория 13<a>'

Если же это для вас является трудновыполнимым, то можно прибегнуть к другому варианту, в котором необходимо использовать буферизацию вывода с последующей заменой ссылок, присутствующих в сгенерированном html, с помощью функции preg_replace.
(Добавление)
denandi пишет:
Подведем итог всего поста неочем
Пост был бы сразу "о чем", если бы вы правильно изложили вашу задачу.
Исходя из ваших ответов, можно сказать, что вы даже html толком не знаете и не знаете из чего состоят ссылки и с чем их едят. Вот уперлись в адресную строку и все тут, поэтому и я вас долго понять не мог.
 
 Top
denandi
Отправлено: 15 Ноября, 2010 - 21:35:59
Post Id


Новичок


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


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




Цитата:
А вы хотели, чтобы волшебным образом изменились все ссылки на ваших страницах?

Фу.. ну наконец то мы нашли взаимопонимание, и вы наконец то открыли мне глаза. Спасибо!
теперь причина стала очевидна.
А я блин думал мод-реврайт сам делает этот финт! И главное нигде в примерах не встречал более расширенное пояснение.
Еще раз спасибо.
 
 Top
JustUserR
Отправлено: 16 Ноября, 2010 - 11:16:55
Post Id



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


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


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




denandi В качестве возможного средства реализации собственной обработки пользовательских URL-адресов является использование программной реализации средства соответствующего разбора - в частности возможно проведение установки базового CGI-скрипта для заданного виртуальног пути или целевой директории в пределах конфигурируемого компонента - и обеспечение требуемых действий за счет механизмов alias-инга и действенного перенаправление - и использованиеи переменных окружения PATH_INFO и SCRIPT_NAME для получения параметров оригинального запроса


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
denandi
Отправлено: 17 Ноября, 2010 - 13:09:55
Post Id


Новичок


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


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




JustUserR, Спасибо, разобрался!
Возник еще один вопрос:
Сайт разделен на две части: общая и админка. Есть два правила. например генерируют два одинаковых адреса. (надо)
-результат выполнения у обоих, например: http://site/5.html

CODE (htmlphp):
скопировать код в буфер обмена
  1. общая:
  2. RewriteRule ^([^/]*)\.html$ /st/page.php?cat=$1 [L]
  3. админка:
  4. RewriteRule ^([^/]*)\.html$ /admin/test1/test2.php?cat=$1 [L]


то-есть, если я в админке кликаю на подобную ссылку (5.html), я вылетаю из админки (по первому правилу! он стоит первый в списке.)
Каким образом можно дописать (исправить правило? ЕСЛИ ЭТО ВОЗМОЖНО)
что бы как то разделить общую и админскую часть сайта - но при условии одного адреса, например 5.html
Говоря иначе, можно ли как то вставить в хтакис логику типа если есть такой URL - применить такое то правило, или иначе. Вообщем что то типо такого.
Я просто знаю сайт где подобное реализовано, значит есть такая возможность.


Заранее благодарен за помощь в столь бестолковых вопросах.

(Отредактировано автором: 17 Ноября, 2010 - 19:23:05)

 
 Top
JustUserR
Отправлено: 18 Ноября, 2010 - 15:22:50
Post Id



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


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


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




denandi пишет:
JustUserR, Спасибо, разобрался!Возник еще один вопрос:
Пожалуйста! В качестве возможного варианта для явного осуществления решения вашей задачи целесообразно использовать обработку URL-адресами средствами CGI-приложения - в таком случае для задаваемого виртуального пути в целевой директории web-пространства осуществляется передача задаваемых пользователем параметров в соответствующие переменные окружения В случае если в качестве целевого CGI-приложения провести подключение PHP-скрипта по каскаду действенного перенаправления - то возможно проведения анализа группы правил на основе регулярных выражений и строковых функций


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
denandi
Отправлено: 19 Ноября, 2010 - 09:41:36
Post Id


Новичок


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


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




Скажите пожалуйста, если в директории админки в хтакис добавить обработку ЧПУ - он будет обрабатывать?
Я закомментировал в центральном хтакисе обработчик чпу. И попробовал включить в админку. У меня не получилось. В доках не нашел ничего отвечающего моему вопросу.
Спасибо.
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Регулярные выражения »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB