|
|
|
| Кто знает как можно изменить url ссылки до её преобразования с помощью мода mod_rewrite??? Скриншот, html страница на ней ссылка на преобразованную страницу, но при наведении на неё отображается старый url. После нажатия на ссылку в адресной строке преобразованный url http://localhost/?test=2 | |
|
|
|
|
|
|
|
для: Jekis
(02.09.2009 в 15:53)
| | А что там такое тоненькое в аттаче?
На пару гигов никак нельзя было прикрепить?
Фильм там какой, или ролик с голосовым описанием проблемы? | |
|
|
|
|
|
|
|
для: Trianon
(02.09.2009 в 16:06)
| | Острить в другом месте будешь. | |
|
|
|
|
|
|
|
для: Jekis
(02.09.2009 в 16:17)
| | Где я буду острить - решать не Вам.
И покамест не я острю, а Вы хамите.
Потому как прикреплять картинку в формате bmp иначе как хамством не назовешь. | |
|
|
|
|
|
|
|
для: Trianon
(02.09.2009 в 17:40)
| | Я смотрю тебя это сильно задело, или дюжа пообщаться захотелось? Так вот, мой совет, общайся в другой теме, а если что то не устраивает, звонок админу или модератору. Я не собираюсь тут разводить дисскусии, а пришёл за помощью. | |
|
|
|
|
|
|
|
для: Jekis
(02.09.2009 в 19:05)
| | ну-ну :) | |
|
|
|
|
|
|
|
для: Jekis
(02.09.2009 в 15:53)
| | не надо спорить с Trianon тк он прав на 100% про тоненький файл)
по поводу mod_rewrite и ссылок, то этот мод тут совершенно не причем тк он преобразует входящий url а не исходящий (исходящий это то, что получает браузер с сервера). И вообще к php он не имеет никакого отношения, потому как это модуль сервера а не php).
А проблема кроется в php алгоритме , который непосредственно формирует html код с этой ссылкой. И формирует он не по-новому типа ?test=2 а по-старому /test.html. Все что нужно сделать это поменять в php алгоритм формирования этих ссылок. И тогда не придется вовсе использовать mod_rewrite для того чтобы преобразовать ***.html в ?***=2. Потому что "старых" ссылок ***.html после изменения алгоритма их формирования уже не появится, разве что не все ссылки на сайте генерируются в php. В таком случае необходимо руками поменять все вхождения ссылок типа ***.html | |
|
|
|
|
|
|
|
для: vito
(03.09.2009 в 11:01)
| | Да я по php вроде бы ничего не упоминал, т.к я его не использую в данном случае. Если может подскажите какой нибудь алгоритм для преобразования, я в php слаб, а мне желательно сдлеать это на php. | |
|
|
|
|
|
|
|
для: Jekis
(02.09.2009 в 15:53)
| | Преобразование гиперссылок средствами сервера Apache
Блуждая просторами Интернета вы видели множество различных гиперссылок, некоторые имели разный вид, передавая различные знаки (?, &, ;) и т.д.
Если знаков немного ссылка ещё имеет приятный вид, но некоторые ссылки не очень понятны. Вот например ссылка имеет такой вид. http://www.webobzor.net/index.php?mod=stat
Нет ничего сложного, но адрес может выглядеть и так http://www.webobzor.net/stat Так лучше? Так можно передавать не один параметр.
Возможно вы встречали подобные ссылки на некоторых сайтах, наверно вы подумали что скрипт для каждого файла создаёт отдельную папку. Да, это вариант, но неправильный. Совсем не обязательно так поступать.
И так как же это сделать, не создавая отдельных каталогов, ответ совсем прост, разработчики нашего любимого сервера Apache придумали модуль mod_rewrite, который нам и поможет в этом вопросе.
Модуль mod_rewrite
mod_rewrite – это специальный модуль для серверов Apache, который был специально сделан для создания сайтов с ЧПУ. Он был написан в апреле 1996 года и эксклюзивно подарен The Apache Group в июле 1997.
Модуль представляет собой библиотеку расширения для серверов типа Apache. Находится в папке modules, в корневой папке апача и называется обычно mod_rewrite.so (устанавливается отдельно). С помощью mod_rewrite можно всего парой строк в .htaccess сделать понятный для человека url.
Подключение модуля mod_rewrite
Зайдите в каталог в котором установлен ваш Web – сервер Apache, откройте папку modules, и убедитесь что в ней присутствует файл mod_rewrite.so.
Файл у нас есть теперь перейдите в каталог conf и откройте файл httpd.conf, вам необходимо убедиться что данный модуль подключён, для этого найдите такую строку
LoadModule rewrite_module modules/mod_rewrite.so
Нашли? Нет, тогда добавьте эту строку.
Сохраняйте изменения в файле httpd.conf и перезагрузите сервер.
Преобразуем гиперссылку
В каталоге, где у вас выполняются PHP скрипты, создайте файл .htaccess. Запишите в файл .htaccess такие строки:
RewriteEngine On
RewriteBase /test
RewriteRule index.php.* - [L]
RewriteRule ^(.*) index.php?id=$1
В строке RewriteEngine On - мы сообщаем серверу что хотим использовать средства модуля Rewrite.
Строка RewriteBase /test – Указывает серверу где искать файл index.php (или какой у вас по умолчанию), если вы в этой строке укажите неправильный путь, то сервер будет загружать файл с указанной папки, а не стой что нужна вам.
RewriteRule ^(.*) index.php?id=$1 – В этой строке указываем имя файла, и что необходимо трансформировать.
Теперь создаём файл index.php и пишем там всего одну строку.
<?php include ($id.".php") ?>
Думаю с этим всё понятно, гиперссылка, для открытия файла должна иметь такой вид http://localhost/test/page. Естественно, файл page.php уже должен быть создан, и находиться в каталоге test.
Вот как бы и всё, но не тут то было, браузер ни в какую не хочет нам показывать такой необходимый для нас файл 1.php, вместо этого мы видим страницу с ошибкой 404.
В чём же дело? Для того что бы браузер понял что ему прислал сервер необходимо в файл index.php в самый верх добавить такую запись.
<?php header("http/1.0 200 Ok") ?>
Эта строка говорит браузеру: всё ОК, страница успешно загружена. Полную информацию по ошибкам и ответам сервера, читайте эту статью Коды ответов HTTP сервера
Будьте внимательны, вам необходимо строку header("http/1.0 200 Ok") поместить перед отправкой заголовков, т.е. в самом верху, иначе будет ошибка.
Единственным недостатком этого метода является то что, на вашем сайте может не использоваться модуль Rewrite и тогда вы будете видеть страницу с ошибкой 500. | |
|
|
|
|
|
|
|
для: FREEBSD
(09.09.2009 в 01:51)
| | У меня в каталоге 2 html файла. pool.html и test.htm. На странице pool.html ссылка на страницу test.htm. При нажатии на ссылку сраница test.htm должна преобразовываться в ?=test2. Но этого почему то не происходит. При нажатии данную ссылку происходит преобразование не test.htm а index.php который у меня также находится в этом каталоге. Вот код .htaccess:
RewriteEngine on
RewriteBase /
RewriteRule ^test/.html$ ?test=2 [R]
Помогите что не так делаю??? Если убираю index.php преобразования вообще не происходит пишет что файл не найден. | |
|
|
|
|
автор: h (09.09.2009 в 17:34) |
|
|
для: Jekis
(09.09.2009 в 16:39)
| | ^test/.html$
слэш должен быть обратным
^test\.html$
а если он и так обратный , то всё правильно работает
, судя по тому что перебрасывает на index. php
Только для этого и нужен mod_rewrite
, чтобы вместо запрашиваемых файлов отдавать другие, которых не было в ссылке | |
|
|
|
|
|
|
|
для: h
(09.09.2009 в 17:34)
| | Прийдётся искать php скрипты? Инет облазил даже примеров не нашёл((( | |
|
|
|