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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
evoroz



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Все на хостинге.
На корневой директории Joomla и есть index.php.
Есть поддиректория /store/ и есть свой index.php.
Вопрос вот в чем: хотелось бы, чтобы при обращении к сайту по дефолту открывался файл /store/index.php.
Пробовал директивы DirectoryIndex и Redirect - файл в store открывается, НО index.php в корне уже не открывается. А он нужен.
Подскажите, куда нужно рыть?

Всего записей: 3487 | Зарегистр. 30-03-2002 | Отправлено: 02:16 23-09-2014
Mavrikii

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

Цитата:
по дефолту

это значит / -> /store/index.php без переадресации?

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 02:38 23-09-2014
evoroz



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Мне нужно, чтобы при наборе hthp://имя_сайта.ru открывалась страница /store/index.php
В корне у меня блог джумлы. Если объявить /store/index.php главной, в блог я никак не попадаю.

Всего записей: 3487 | Зарегистр. 30-03-2002 | Отправлено: 11:04 23-09-2014
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
evoroz
 
если в .conf файл, то  
 
RewriteEngine on
RewriteRule   ^/$  /store/index.php  [L]
 
об этом речь?
 
если с переадресацией, то [R,L]
 
если в .htaccess, то  
RewriteRule   ^$  /store/index.php [L]

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 21:40 23-09-2014
evoroz



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

Цитата:
об этом речь?

Нет. Твой вариант, увы, не проходит.
Речь вот о чем: нужно условие:
Если клиент пришел из интернета - отправляем на /store/
Если внутренний переход, то может пройти в корень.

Всего записей: 3487 | Зарегистр. 30-03-2002 | Отправлено: 23:32 23-09-2014
Mavrikii

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

Цитата:
Если внутренний переход, то может пройти в корень

и как вы его определите, внутрений или нет?  
можете, конечно, по рефереру - но это ненадежно.
можно кидать всегда, если не выставлена кука, но mod_rewrite тут не нужен.
хотя, конечно, можно проверять куку и в mod_rewrite

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 23:34 23-09-2014 | Исправлено: Mavrikii, 23:35 23-09-2014
drrdar

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

Цитата:
зачем вам mod_rewrite в данном случае? добавляете кусок php кода в detail.php, в котором смотрите значения id и section_id, после чего делаете 301 переадресацию с помощью функции heade

 
Не всегда есть возможность туда лезть: это пилят другие люди.  
 
А я разобрался сам. Если кому надо, то вот, напомню исходные данные:

Цитата:
Неправильный УРЛ выглядит вот так:    
   
http://examp.le/catalog/detail.php?id=777&section_id=string1&cat=789  
   
На самом деле, это дубль, и вместо string1 нужно конкретное число, например, 123. А вместо 777 м.б. любая последовательность из 3-х цифр. Соотв., с этой кривой ссылки нужен редирект на    
   
http://examp.le/catalog/detail.php?id=777&section_id=123&cat=789  
   
Почитал, что с помощью QUERY_STRING такое должно парситься. Что-то типа  
   
RewriteCond %{QUERY_STRING} ^section_id=(string1)&cat=789$  
   
RewriteRule ^catalog/detail.php?id=([0-9]{1,3})& http://examp.le/catalog/detail.php?id=$1&section_id=123&cat=125  
   
Естественно, ни фига не работает, ибо тёмный лес вообще.  

 
Вот так работает:
 
RewriteCond %{QUERY_STRING} ^id=([\d]{3})&section_id=string1&cat=789$  
RewriteRule ^catalog/detail\.php$ http://examp.le/catalog/detail.php?id=%1&section_id=123&cat=789 [L,R=301]
 
Битрикс - зло.

Всего записей: 25 | Зарегистр. 06-03-2008 | Отправлено: 16:24 24-09-2014 | Исправлено: drrdar, 16:26 24-09-2014
natpoit



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Скажите, пожалуйста, а как мне переименовать директорию?  
 
Напр, установленный скрипт генерир. линки так
 
http://mysite.com/wpccategories/name_category
 
A мне надо:
 
http://mysite.com/categories/name_category
 

 

Всего записей: 801 | Зарегистр. 31-08-2002 | Отправлено: 23:29 20-11-2014
Mavrikii

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

Код:
RewriteRule ^/?wpccategories/(.*)$ /categories/$1 [L]

 
если нужен фактический редирект браузера (ну и поисковиков), то добавить флаг R

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 23:41 20-11-2014 | Исправлено: Mavrikii, 23:41 20-11-2014
natpoit



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо большое, сейчас попробую

Всего записей: 801 | Зарегистр. 31-08-2002 | Отправлено: 00:48 21-11-2014
natpoit



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

Код:
 
AuthType Basic
AuthName "Please check back in 24 hours"
AuthUserFile  
 
"/home/camelou2/.htpasswds/public_html/passwd"
require valid-user
 
ServerSignature Off
LimitRequestBody  
 
10240000
<Files wp-config.php>
order allow,deny
deny from all
</Files>
#AIOWPS_BASIC_HTACCESS_RULES_END
#AIOWPS_PINGBACK_HTACCESS_RULES_START
<Files xmlrpc.php>
order deny,allow
deny from all
</Files>
#AIOWPS_PINGBACK_HTACCESS_RULES_END
#AIOWPS_BLOCK_SPAMBOTS_START
<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} ^(.*)?wp-comments-post\.php(.*)$
RewriteCond %{HTTP_REFERER} !^http(s)?://camelotfoods\.com [NC,OR]
RewriteCond %{HTTP_USER_AGENT}  
 
^$
RewriteRule .* http://127.0.0.1 [L]
</IfModule>
#AIOWPS_BLOCK_SPAMBOTS_END
# END All In One WP Security
 
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
 
 
RewriteEngine On
RewriteRule ^/?wpccategories/(.*)$ /categories/$1 [L]
 
 

Всего записей: 801 | Зарегистр. 31-08-2002 | Отправлено: 19:24 22-11-2014
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
natpoit
ну так до последнего правила и не дойдет вообщем из за
Цитата:
RewriteRule ^index\.php$ - [L]  
RewriteCond %{REQUEST_FILENAME} !-f  
RewriteCond %{REQUEST_FILENAME} !-d  
RewriteRule . /index.php [L]  

поместите выше.

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 23:02 22-11-2014
natpoit



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ой, прошу прощения
 
 
 
Заработало. Но теперь  404::
 
http://site.com/wpccategories/gluten-free-brownies/ - старый линк, контент на месте
http://site.com/categories/gluten-free-brownies/ - новый линк, ответ 404, контент не найден

Всего записей: 801 | Зарегистр. 31-08-2002 | Отправлено: 04:14 23-11-2014
Mavrikii

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

Цитата:
новый линк, ответ 404, контент не найден

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

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 07:21 23-11-2014
natpoit



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Да, я посмотрела, действительно это в базе прописано, а если поправить, то при обновлении скрипта все равно все вернется. Ну ладно. Спасибо за помощь!!!

Всего записей: 801 | Зарегистр. 31-08-2002 | Отправлено: 14:04 23-11-2014
Mavrikii

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

Цитата:
то при обновлении скрипта все равно все вернется

С чего бы? Пользовательские данные в базе, обычно, не меняются при обновлении.

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 17:42 23-11-2014
appolo

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый вечер ,подскажите пожалуйста как мне в wordpress поставить рядом два html кода? так чтоб чат и плеер стояли друг около друга а не один под вторым? вот оба кода  [hana-code-insert name='videopleer' /]   и второй код    [hana-code-insert name='ChatovodChatovod' /]   заранее большое спасибо ....замучалась уже )))

Всего записей: 54 | Зарегистр. 29-05-2006 | Отправлено: 19:44 29-11-2014
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
appolo
1) вы название темы читали? или лишь бы запостить?
2) WordPress
3) wp тут не при чем, нужно смотреть на тот html+css код что генерится вместо этих шорткодов

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 22:30 29-11-2014
appolo

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
не ругайтесь на меня я совсем новичок в этом деле и ко всему же еще самоучка
 
Добавлено:
помогите кто может разобраться ....html  в шорткод я уже сама сгенерировала ,а вот как дальше быть незнаю

Всего записей: 54 | Зарегистр. 29-05-2006 | Отправлено: 23:27 29-11-2014
Mavrikii

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

Цитата:
помогите кто может разобраться

здесь - не помогут, неужели непонятно?

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 00:19 30-11-2014
Открыть новую тему     Написать ответ в эту тему

Страницы: 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