Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » mod_rewrite: документация, готовые решения, вопросы

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71

Открыть новую тему     Написать ответ в эту тему

Delphi6



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mod_rewrite

Вот уже несколько раз встретился с этим вопросом. Недавно в тех. задании было указано что проект должен быть оптимизирован под поисковые системы. Поискав немного попал на mod_rewrite. Оказывается что mod_rewrite очень и очень полезная вещь. Вот несколько причин почему я решил разобраться с данным зверем:
 

  1. Если вы пишите форумы, сайт с новостями или любой сайт в котором есть конструкция hттp://mybestsite.com/article.php?n=3&page=1. Вы рано или поздно встретитесь с проблемой лицом к лицу, у таких сайтов есть огромный минус: адрес сайта выглядит для пользователей не "нормально", такой адрес не индексируется многими поисковыми системами, удаляется все после знака "?". Ниже приведенные ссылки для него все одни, но просмотрев их он получает разное содержимое (Что плохо сказывается на статистику вашего сайта)

    Код:
    hттp://mybestsite.com/article.php?n=3&page=1
    hттp://mybestsite.com/article.php?n=5&page=2
    hттp://mybestsite.com/article.php?n=6&page=7

    Пользователи у которых нету базовых знаний в Web программировании не могут понять что значит текст после article.php (?n=3&page=1). С использованием mod_rewrite можно на лету преобразовывать адреса типа

    Код:
    hттp://mybestsite.com/article.php?n=3&page=1

    в такой, более понятный и привычный для обыкновенных пользователей

    Код:
    hттp://mybestsite.com/articles/3/page1.htm

    А самое интересное что файл page1.htm вообще не существует, и пользователю не известен путь к файлу к которому он обращается и поисковые системы воспринимают такой адрес как обыкновенную ссылку на html страничку.
     
  2. С помощью mod_rewrite можно запретить скачивать ваши материалы с других сайтов, на собирание которых вы провели бессонные ночи. Например: у вас есть файл bestprogram.zip, у вас на страничке есть линк

    Код:
    <a href="hттp://mybestsite.com/download/bestprogram.zip">Download</a>

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

    Код:
    <a href="hттp://mybestsite.com/download/bestprogram.zip">Download</a>

    и она будет работать без проблем, за трафик будет платить вы а слава и благодарности этому придурку! С помощью mod_rewrite можно запретить cкачивание файлов если referer не ваш сайт

 
Думаю этого достаточно что бы потратить несколько часов на изучение данного материала. Ниже привожу документацию по данному вопросу:
Русские ресурсы

Английские ресурсы

 
Необходимые навыки:

 
Настройка журналирования (Лога):
 
Чтобы включить лог mod_rewrite необходимо в описании вашего виртуального хоста (обычно это файл httpd.conf) добавить две строчки:  

Код:
Код:RewriteLog /путь/к/лог/файлу  
RewriteLogLevel 9  

И перезапустить апача. Крайне не рекомендуется производить это на работающем сервере, так как объемы отладочной информации генерируются действительно большие и найти свое бывает очень сложно.
 
ps: Доп ссылки
Много полезных примеров, но на английском http://www.askapache.com/htaccess/mod_rewrite-tips-and-tricks.html




PHP тут не совсем к месту в названии, потому убрал /Cheery/

Всего записей: 2631 | Зарегистр. 06-07-2004 | Отправлено: 15:26 24-06-2005 | Исправлено: Cheery, 01:07 11-10-2011
diskoff



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте !
не подскажете как сделать редирект с https на http с помощью mod_rewrite

Всего записей: 58 | Зарегистр. 16-03-2012 | Отправлено: 00:02 18-01-2015
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
diskoff
вы определитесь - с https на http или наоборот?
 
https://wiki.apache.org/httpd/RewriteHTTPToHTTPS

Всего записей: 15605 | Зарегистр. 20-09-2014 | Отправлено: 00:06 18-01-2015
diskoff



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
мне надо c https на http , т.к. когда  захожу на сайт по протоколу https  меня перебрасывает на другой домен , следовательно надо  сделать редирект с https на http  ТАК ?
 

Всего записей: 58 | Зарегистр. 16-03-2012 | Отправлено: 00:12 18-01-2015
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
diskoff

Цитата:
т.к. когда  захожу на сайт по протоколу https  меня перебрасывает на другой домен

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

Всего записей: 15605 | Зарегистр. 20-09-2014 | Отправлено: 00:20 18-01-2015
diskoff



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
ну так поэтому, видимо, и не срабатывает предыдущее правило в другой теме.  

а как быть ?

Цитата:
https://wiki.apache.org/httpd/RewriteHTTPToHTTPS

данная статья не подходит ...

Всего записей: 58 | Зарегистр. 16-03-2012 | Отправлено: 00:28 18-01-2015
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
diskoff

Цитата:
данная статья не подходит  

значит что то делаете не так.
 

Цитата:
а как быть ?  

для начала - ответить четко. при заходе по https вас куда то перекидывает?
если да, то до вашего правила может и не доходить - нужно смотреть где происходит редирект.

Всего записей: 15605 | Зарегистр. 20-09-2014 | Отправлено: 00:29 18-01-2015 | Исправлено: Mavrikii, 00:29 18-01-2015
diskoff



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Под словосочетанием
Цитата:
данная статья не подходит ...
подразумевалось-
в статье показан редирект от http к httpS , но мне нужен  редирект от httpS к http
 
Если https  просто заменить на http   то данная статья подойдёт.
Но меня берут сомнения...

Всего записей: 58 | Зарегистр. 16-03-2012 | Отправлено: 00:41 18-01-2015
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
diskoff

Цитата:
в статье показан редирект от http к httpS , но мне нужен  редирект от httpS к http  

а у вас не работает логика? помоему, когда приведен один пример, то второй просто очевиден.
 

Код:
RewriteEngine On
RewriteCond %{HTTPS} on
RewriteRule ^/?(.*) http://%{SERVER_NAME}/$1 [R,L]

Всего записей: 15605 | Зарегистр. 20-09-2014 | Отправлено: 00:43 18-01-2015 | Исправлено: Mavrikii, 00:44 18-01-2015
diskoff



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Нет не работает.
Вставил  
RewriteCond %{HTTPS} on
RewriteRule ^/?(.*) http://%{SERVER_NAME}/$1 [R,L]  
 
в .htaccess , почистил кеш сайта , на всякий пожарный - всё равно  
при заходе на сайт через https перебрасывает на другой сайт, вернее в браузере отображается мой домен
Пример:
(В яндексе)
https://mysite.ru/  , а содержимое страницы принадлежит другому домену, пусть another.ru
 
Точнее не могу расписать.

Всего записей: 58 | Зарегистр. 16-03-2012 | Отправлено: 02:14 18-01-2015 | Исправлено: diskoff, 02:18 18-01-2015
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
diskoff
причин может быть много.  
от неправильно настроено сервера, до установленного и используемого mod_proxy (это все говорит о том, что не меняется адрес домена. может, конечно, еще использоваться и iframe, но это нужно видеть)
слишком мало информации, чтобы сказать в чем проблема.
раз уже что то открывается другое, значит до этих  правил и дело не дойдет.
 
раз сами не разбираетесь в конфигурации сервера (или к ней нет доступа), то может стоит спросить о причине у поддержки хостера.

Всего записей: 15605 | Зарегистр. 20-09-2014 | Отправлено: 02:31 18-01-2015 | Исправлено: Mavrikii, 02:31 18-01-2015
GeMir



Ich finde dich
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть простенький сайт с горсткой адресов вида: домен/скрипт.php и домен/скрипт.php?переменная=число.  
 
Хочется, чтобы первые превращались в домен/скрипт/ а вторые в  домен/скрипт/число.
 
Буду признателен за помощь.
Apache 2.2.16. В качестве шаблонизатора используется Smarty.

Всего записей: 10299 | Зарегистр. 15-02-2004 | Отправлено: 14:28 07-02-2015 | Исправлено: GeMir, 14:32 07-02-2015
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В Apache 2.4 для RewriteRule есть флаг QSD, который грохает строку запроса.
А как такое реализовать в Apache 2.2? (точнее, чтобы работало и в 2.2 и в 2.4)

Всего записей: 6671 | Зарегистр. 14-02-2005 | Отправлено: 12:13 10-04-2015
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
unreal666
http://www.philipphoffmann.de/blog/2012/08/16/how-to-discard-the-query-string-in-a-rewriterule-apache-mod_rewrite/

Всего записей: 15605 | Зарегистр. 20-09-2014 | Отправлено: 12:23 10-04-2015
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
del
 
Добавлено:
Еще в Apache 2.4 есть флаг END, который останавливает процесс преобразования и предотвращает дальнейшее применение правил .htaccess.
А в Apache 2.2 как такое реализовать?

Всего записей: 6671 | Зарегистр. 14-02-2005 | Отправлено: 12:30 10-04-2015 | Исправлено: unreal666, 12:40 10-04-2015
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
unreal666

Цитата:
А в Apache 2.2 как такое реализовать?

комбинация [L] и определение подзапроса

Всего записей: 15605 | Зарегистр. 20-09-2014 | Отправлено: 19:00 10-04-2015
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте, помогите пожалуйста закрыть все ссылки.
 
К примеру на сервере есть такие ссылки:
 

Код:
.../site.ru/style.css
.../site.ru/index.php
.../site.ru/user.php
.../site.ru/js.js
.../site.ru/images/title.png

 
в .htaccess идет следующие преобразования:
 

Код:
RewriteRule ^profile/$ user.php [NS,L]
RewriteRule ^.htaccess(.*)$ .$1 [R=404,L]

 
если попытаться открыть файл, будет страница 404. Можно как-то сделать так, чтоб "ВСЕ" открываемые страницы были 404 кроме тех, которые уже преобразованы?
 
т.е. все картинки, стили и т.д. будут закрыты.... но страница .../site.ru/profile/ будет открыта.

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 16:11 07-05-2015
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sutar

Цитата:
если попытаться открыть файл, будет страница 404

какой файл?  
 

Цитата:
стили и т.д. будут закрыты

что значит "закрыты"? выдано 404? ну так поместите все в отдельную папку с каким нибудь странным названием и на нее переделывайте через mod_rewrite

Всего записей: 15605 | Зарегистр. 20-09-2014 | Отправлено: 22:02 07-05-2015
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii

Цитата:
какой файл?  

все файлы. т.е. все варианты адресной строки - закрыть.
а открытие варианты - доступными.
 
Открытий вариант:

Цитата:
RewriteRule ^profile/$ user.php [NS,L]  


Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 22:48 07-05-2015
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sutar
добавьте в конце правило запрещающее всё. флаг L в предыдущих правилах его обойдет
что то такого типа
 
RewriteRule . - [R=404,L]

Всего записей: 15605 | Зарегистр. 20-09-2014 | Отправлено: 05:16 08-05-2015
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
ранее открытие ссылки - так-же закрываются.

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 18:18 08-05-2015
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71

Компьютерный форум Ru.Board » Интернет » Web-программирование » mod_rewrite: документация, готовые решения, вопросы


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru