Ru-Board.club
← Вернуться в раздел «Web-программирование»

» mod_rewrite: документация, готовые решения, вопросы

Автор: saharito
Дата сообщения: 11.08.2009 08:42
Прошу помочь .. не могу сделать читабельную ЮРЛ
вот из этого хочу сделать .
/index.php?&direction=0&order=&directory=Book
в
/book

мой код , что не правильно я прописал ?
RewriteRule ^([A-Za-z0-9-]+) /$ index.php?&direction=0&order=&directory=$ 1 [R]
Автор: dacuan
Дата сообщения: 11.08.2009 09:05
saharito
Пробелы лишние, да и флаг R лучше убрать:

Код: RewriteRule ^([A-Za-z0-9-]+)/$ index.php?&direction=0&order=&directory=$1
Автор: saharito
Дата сообщения: 11.08.2009 09:21
Сделал , ошибку не выдает как раньше но и не сработал . .
http://www.***.ru/upload/index.php?&direction=0&order=&directory=game
Автор: Cheery
Дата сообщения: 11.08.2009 09:23
saharito
ваша регулярка для пути закрытого слэшем. Обращаетесь изначально по нему?
Автор: saharito
Дата сообщения: 11.08.2009 09:26
Cheery
Не понял поточнее куда обратиться ?
Автор: dacuan
Дата сообщения: 11.08.2009 09:31
saharito
Имеется в виду, что пробовать надо URL

http://www.***.ru/book/
Автор: saharito
Дата сообщения: 11.08.2009 09:35
По данному адресу у меня форум ... а здесь у меня обменник /upload/
а если попать в папку гаме то выдает вот такое
index.php?&direction=0&order=&directory=game
мне надо обменник сделать читабельным , а потом закрыть от скачивания другими форумами . А то посещаемости нету , а нагрузка идет .. уже просто устал писать чтобы не выкладывали на другие ресурсы прямые ссылки на скачивание .

Добавлено:
я .htaccess кидаю на на форум , а на аплауд .. /upload/ или что-то я туплю .. ?

Добавлено:
RewriteEngine On
RewriteRule ^([A-Za-z0-9-]+)/$ index.php?&direction=0&order=&directory=$1
Автор: dacuan
Дата сообщения: 11.08.2009 09:54
saharito
Судя по всему, вам требуется антилич. На форуме есть специальная ветка с обсуждением защиты ссылок.
Автор: saharito
Дата сообщения: 11.08.2009 14:12
dacuan
спасибо но мне уже давал Cheery эту ссылку . Там половино уже умерли ... да если я бы былбы профи в PHP то думаю прикрутил-бы капчу .
Може есть где нибуть мод или чтонить для движка Powered by PHP Advanced Transfer Manager v1.30 ? может где это обсуждалось ... а то гуглил да яндексил толку ноль .
Только самое главное поподал на свои-же вопросы .. хаха .
Автор: dacuan
Дата сообщения: 11.08.2009 14:41
saharito
Вот здесь есть статьи с подробным разбором, как делать каптчу. А с движком этим я не знаком, так что ничего подсказать не могу.
Автор: saharito
Дата сообщения: 11.08.2009 15:03
dacuan
Благодарю и на этом ! буду значит закрывать пасом аплауд ! PHP плохо знаю .. учимся только .
P.S Могу написать не сложный сайт на PHP с базой ... но в чужом коде пока сложновато разбираться .
Автор: Cheery
Дата сообщения: 11.08.2009 20:20
saharito
я же сказал, что надо сделать для защиты - проверяйте с помощью mod_rewrite реферера.
в большинстве случаев он не режется


Цитата:
RewriteEngine On
RewriteRule ^([A-Za-z0-9-]+)/?$ index.php?&direction=0&order=&directory=$1

Автор: blacks666
Дата сообщения: 16.08.2009 02:33
Ищутся добрые люди готовые помочь!

3и или 4е сутки не могу собрать следу штуку :


ЗАДАЧА:
При заходе на site.spb.ru по установленным кукам посетитель перенаправлялся
на один из субдоменов и там оставался. Позже добавить на весь сайт редиект
«с www» на «без www».


ПОДРОБНЕЙ:
Пользователь заходит на site.spb.ru
В корне сайта лежит htaccess


Код: RewriteEngine On
RewriteBase /

# субдомены – построены по правилам моего хостера
    RewriteCond %{HTTP_HOST} (www\.)?sub1\.site.\spb\.ru$
    RewriteCond %{REQUEST_URI} !^(/)? sub1/
    RewriteRule ^(.*)$ sub1/$1

    RewriteCond %{HTTP_HOST} (www\.)? sub2\. site.\spb\.ru$
    RewriteCond %{REQUEST_URI} !^(/)? sub2/
    RewriteRule ^(.*)$ sub2/$1

# прочитать значение куки и перенаправить на субдомен указанный в куки
    RewriteCond %{HTTP_COOKIE} setting=([^;]+) [NC]
    RewriteRule ^(.*)$ http://%1.site.spb.ru/ [R=302,QSA,L]
Автор: andrewtishkin
Дата сообщения: 17.08.2009 00:49
Как сделать так, чтобы всё что запрашивается по example.com/aaa/bbb выдавало то же самое, что и по адресу example.com/aaa/bbb/ccc/?

Допустим открываем example.com/aaa/bbb/hello.php
А получаем то, что можно открыть и по example.com/aaa/bbb/ccc/hello.php

Я вот сразу соорудил вот такую конструкцию

RewriteEngine on
RewriteBase /
RewriteRule ^aaa/bbb/(.*)$ aaa/bbb/ccc/$1

Но результата не получил... Теперь сижу строю чёрт знет что, уже и R, P, L перепробовал, кучу кобинаций, но только запутался ещё больше

Помогите кто-нибудь please
Автор: dacuan
Дата сообщения: 17.08.2009 09:36
andrewtishkin
Включите журналирование и покажите код здесь

blacks666
Попробуйте добавить условие в последний блок

Код: # прочитать значение куки и перенаправить на субдомен указанный в куки
RewriteCond %{HTTP_HOST} ^(www\.)?site\.spb\.ru$
RewriteCond %{HTTP_COOKIE} setting=([^;]+) [NC]
RewriteRule ^(.*)$ http://%1.site.spb.ru/ [R=302,QSA,L]
Автор: andrewtishkin
Дата сообщения: 18.08.2009 03:22

Цитата:
Включите журналирование и покажите код здесь

Я уже вроде решил проблему. В приведённом варианте там будет бесконечное зацикливание. Избавиться я от него не смог, просто переименовал одну папку, чтобы Apache по кругу не ходил. Конечно, не совсем то, что хотелось, но всё же

Но насчёт борьбы с такими бесконечными циклами если есть у кого-то опыт - поделитесь мнением. Интересно почитать
Автор: dacuan
Дата сообщения: 18.08.2009 09:21
andrewtishkin

Цитата:
Но насчёт борьбы с такими бесконечными циклами если есть у кого-то опыт - поделитесь мнением. Интересно почитать

Каждый случай уникален У вас можно попробовать добавить дополнительное условие:

Код: RewriteEngine on
RewriteBase /

RewriteCond %{REQUEST_URI} !^aaa/bbb/ccc/
RewriteRule ^aaa/bbb/(.*)$ aaa/bbb/ccc/$1
Автор: Mouzes
Дата сообщения: 21.08.2009 10:11
Всем трям. Мы тут поднимаем сетевой ДС портал, и есть некоторые сложности. Хотелось бы сразу поблагодарить грамотных и чутких модераторов (Cheery), с его помощью мы вообще старенький двиган запустили. Ситуация такая:

Сам домен: http://balnet.ru

Портал поднимаем в подпапке /portal http://balnet.ru/portal

Ссылки на новости, псоле обработки выдаются такие: http://balnet.ru/portal/news/2009/08/20/test/#full

на категории такие: http://balnet.ru/portal/news/

Искал в этой теме тех, кто уже сталкивался с подобным, 27 страниц и ещё щас буду читать но пока не нашёл.
Нам ничего не нужно изменять\обрабатывать и т.д., просто чтобы стали открываться нвости. .htaccess - пока в таком виде:

DirectoryIndex index.html index.php category.php

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} !aaa/bbb/(.*)$
RewriteRule ^aaa/bbb/(.*)$ aaa/bbb/(.*)$

(это добавил: RewriteCond %{REQUEST_URI} !aaa/bbb/(.*)$
RewriteRule ^aaa/bbb/(.*)$ aaa/bbb/(.*)$
после того как увидел в логах, что он просил добавить)


Лог включил, сыпется:

217.147.31.10 - - [21/Aug/2009:11:57:05 +0400] [balnet.ru/sid#2b9073069d30][rid#2b9073458228/subreq] (3) [perdir /var/www/html/portal/] strip per-dir prefix: /var/www/html/portal/index.php -> index.php
217.147.31.10 - - [21/Aug/2009:11:57:05 +0400] [balnet.ru/sid#2b9073069d30][rid#2b9073458228/subreq] (3) [perdir /var/www/html/portal/] applying pattern '^aaa/bbb/(.*)$' to uri 'index.php'
217.147.31.10 - - [21/Aug/2009:11:57:05 +0400] [balnet.ru/sid#2b9073069d30][rid#2b9073458228/subreq] (1) [perdir /var/www/html/portal/] pass through /var/www/html/portal/index.php

"pass through" - "проходят через"

А вот что просит, ума не проложу...
Автор: Cheery
Дата сообщения: 22.08.2009 00:16
Mouzes

Цитата:
А вот что просит, ума не проложу...

кто "просит"? пишет просто что запрос не подходит ни под одно из правил и поэтому проходит напрямик.
Автор: Mouzes
Дата сообщения: 22.08.2009 05:17

Цитата:
кто "просит"? пишет просто что запрос не подходит ни под одно из правил и поэтому проходит напрямик.


Все ссылки по документации просмотрел, сами доки почитал. Местами понимаю, местами нет и долгая история так чуствую, чтобы это всё настроить. Проект у нас не коммерческий а сетевой, и уже сетевики просят его включить в работу, как есть запустил, будь что будет

Полюбому пасипки за помощь
Автор: Mouzes
Дата сообщения: 22.08.2009 12:25
Вопрос гложит а можно ли с этим модом и файлом .htaccess всё же дать доступ в какой либо каталог, лежащий в корне, скажем там несколько расшаренных файлов. Или это нельзя уже организовать?
Автор: Mouzes
Дата сообщения: 23.08.2009 06:37
Сделал по фтп, всем сенк.
Автор: Cheery
Дата сообщения: 25.08.2009 22:49
Переброс на защищенное соединение

Цитата:
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]
Автор: ragimoff
Дата сообщения: 26.08.2009 23:04
Доброй ночи!

Код:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(.+)\.site\.ru$ [NC]
RewriteCond %{HTTP_HOST} !^www\.site\.ru[NC]
RewriteCond %{REQUEST_URI} !^/subdomains
RewriteRule ^(.*) %{HTTP_HOST}$1
RewriteRule ^(.*)\.site\.ru(.*) index.php?town=$1&c=$2
RewriteRule ^subdomains\.(.*) /subdomains/$1
Автор: Cheery
Дата сообщения: 27.08.2009 01:53
ragimoff
дописываете
RewrieRule %{QUERY_STRING} !^/newyork
и не будет срабатывать на ту директорию
и так для каждой директории, на которую хотите, чтобы не срабатывало..
для данного преобразования нужно писать отдельное правило
Автор: Cheery
Дата сообщения: 27.08.2009 04:42
Я вот тут задумался.. а можно ли в RewriteCond проверить путь, который, скажем, получен в пред. условии?
Скажем
RewriteCond %{REQUEST_URI} test=([a-z]+) [NC]
RewriteCond %1 -d
вот как выделенное сделать по нормальному? проверить, что есть директория с именем указанным в аргументе? Там нужно полный путь, похоже, сформировать.. Только как выцепить физический путь к данной директории?
оно работает если прописать полностью
RewriteCond %{DOCUMENT_ROOT}/путь_от_корня/%1 -d
но может есть способ получить путь к дире, где находится .htaccess?
Автор: board478
Дата сообщения: 26.09.2009 00:08
как сделать
http:\\site.com\shop\page1.html =>>>
http:\\site.com\page1.html

тоесть убрать shop\

очень хотелось бы в виртуемарте убрать этот Псевдоним (shop).
заранее благодарен
Автор: YFocker
Дата сообщения: 30.09.2009 12:23
Приветствую!
Возникла необходимость в следующем:
Имеется адрес:
http://localhost/phpBB3/viewforum.php?f=3

Нужно привести его к виду http://localhost/forum/3

Пишу вот что:
RewriteRule ^(.*)forum/(.*)$ $1viewforum.php?f=$2

Подскажите пожалуйста, где я неправ..
Спасибо!
Автор: dacuan
Дата сообщения: 30.09.2009 12:38
YFocker
Попробуйте так:

Код: RewriteRule ^forum/(.*)$ phpBB3/viewforum.php?f=$1
Автор: YFocker
Дата сообщения: 30.09.2009 15:59
dacuan, спасибо за ответ, попробовал, но результата нет...
Возможно, я уже начинаю мудрить, но ведь настраивается "корневой" файл .htaccess, потому что файл с таким же именем у меня еще находится в папке /phpBB3.
Мой корневой .htaccess содержит:
<IfModule mod_rewrite.c>
RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico

RewriteRule ^(.*)$ index.php?q=$1 [QSA]
RewriteRule ^forum/(.*)$ phpBB3/viewforum.php?f=$1
</IfModule>

В httpd.conf у меня включено
...
<Directory />
Options FollowSymLinks
AllowOverride All
Order deny,allow
Deny from all
</Directory>
...
но логи (файл error.log, там я пытаюсь найти то, что бы показало мне ошибки реврайтинга) у меня никак не откликается - там не появляется данных об изменениях, которые я провожу..
совсем запутался. ощущение, что модуль реврайта не работает.
Буду благодарен любым идеям...

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445

Предыдущая тема: PHP: Регулярные выражения (RegExp, Regular, eregi, preg)


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.