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

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

Автор: usertum
Дата сообщения: 21.03.2009 23:18
RewriteRule ^jabber/create.html$ /index.php?name=Jabber [L]

Так работает, но путь на картинки теряется...
Автор: Cheery
Дата сообщения: 21.03.2009 23:20
usertum

Цитата:
Так работает, но путь на картинки теряется...

какой? ну сами подумайте - зачем вам путь 127.0.0.1 на картинки?
или что значит "теряется"?
Автор: usertum
Дата сообщения: 21.03.2009 23:24
[Убрал IP]
Автор: Cheery
Дата сообщения: 21.03.2009 23:28
usertum

Цитата:
Вот:

я же сказал - указывайте полный путь от корня сайта
не
<img src="images/logos/logo_web_2_2.gif" border="0" alt="SLAED CMS">
а
<img src="/images/logos/logo_web_2_2.gif" border="0" alt="SLAED CMS">
или пропишите в странице в head base tag:
<base href="/" />
ессно же ваш браузер будет запрашивать картинки как
/jabber/images/logos/logo_web_2_2.gif
при первоначальной записи

можете добавить строчку для картинок, если хотите
то есть
RewriteRule ^jabber/(.*\.gif)$ /$1
что то такое
Автор: Afin
Дата сообщения: 10.04.2009 03:39
Народ, есть проблема.
Есть на сайте папка /folder/
В ней будут хранится другие папки, по папке на пользователя.
Т.е. /folder/user1/
/folder/user2/

И тд.

Нужно сделать так, чтобы заполнив на основном сайте логин и пароль, пользователь получал доступ к своей папке (данные о папке пользователя берутся из бд). Извне папки должны быть недоступны никому, крому этого залогиненного пользователя.
Использовать .htpasswd нельзя, потому что нужно конкретно чтобы пользователь логинился через мою форму на сайте.

Пока всё что получилось это сделать следующее:
в каждой папке /folder/userX/ лежит файл .htaccess со следующим содержанием:

код

RewriteEngine On
Options -Indexes
DirectoryIndex get.php
RewriteRule ^get.php?file=$1?$ get.php?file=$1 [L]
RewriteRule ^([^/]+)?$ get.php [L]


И также лежит php скрипт get.php, который по сути нужен для того, чтобы проверить сессию пользователя,и если все в порядке, показать нужный файл в браузере (обычно файлы это html странички).

Проблема в том, что если папке /folder/userX/ есть другие папки, например:

/folder/userX/index.html
/folder/userX/css/

То можно спокойно просмотреть файл /folder/userX/css/main.css
извне, не будучи залогиненым.

Никак не придумаю, как правильно решить эту проблему.

По сути мне нужно чтобы все запросы которые идут не от get.php блокировались

Применение следующее:
в папку /userX/ кидается например сверстанный сайт в html
пользователь может глянуть на файл /userX/index.html через get.php?file=index.html
При этом все css файлы подхватываются и не блокируются, потому что идет запрос от get.php

Реально ли это вообще сделать ? Уже вторые сутки мучаюсь...

Заранее спасибо

P.S. Пожалуйста, не надо отправлять меня на доки и тд. Если бы я что-нибудь нашел там, не писалы бы сюда.
Автор: Cheery
Дата сообщения: 10.04.2009 03:57
Afin

Цитата:
По сути мне нужно чтобы все запросы которые идут не от get.php блокировались

ну так и направляете все запросы на этот скрипт

Цитата:
RewriteCond %{REQUEST_URI} !^/get.php
RewriteRule ^(.*)$ get.php?file=$1 [L]

что то такое
Автор: Afin
Дата сообщения: 10.04.2009 13:49
Попробовал то что посоветовали. Работает частично.

допустим есть структура
/folder/user/index.html
/folder/user/css/main.css

через get.php?file=index.html получается открыть index.html но стили не подхватываются (видимо блокируются...)

притом что get.php?file=css/main.css работает нормально, показывает css файл

Как сделать чтобы get.php?file=index.html смог брать файлы которые требуются для index.html ?
Автор: Cheery
Дата сообщения: 10.04.2009 18:17
Afin

Цитата:
но стили не подхватываются (видимо блокируются...)

ну так проверяйте как выглядят пути к ним. возможно ваш get.php неправильно их интерпретирует.
и вообще - зачем еще и статику гнать через скрипт?
Автор: booro
Дата сообщения: 13.04.2009 14:55
Как преобразовать ссылки вида /catalog.html?page=shop.browse&category_id=43 в /catalog/category=43

RewriteRule ^catalog.html?page=shop.browse&category_id=([0-9]+)$ /catalog/category=$1 [L] ничего не дает.
Автор: newbies
Дата сообщения: 15.04.2009 07:36
Возникла проблема, тип один каким то образом направил на мой сайт кучу поисковых систем, вообще м сложил мне сайт, хостер закрыл на 2часика, мне на хостере сказали что надо мутить в файле : . htaccess
Писать там : deny from all
Вот хочу спросить , как правильно составить форму, плохо или хорошо это будет ?
Там ведь можно запрещать индекс ботам а можно и разрешать.

Так вот интересно какими ботами мой сайт сложили.
Вообще кто это сделал реально узнать ? а если написать заявления в милицию, будет этому челу что ни будь ?
Автор: PEDKA
Дата сообщения: 15.04.2009 07:53
newbies

Цитата:
Вот хочу спросить , как правильно составить форму, плохо или хорошо это будет ?

Если забанишь IP-прокси спамеров, то ничего страшного не будет. Но в первую очередь убедись, что у тебя нет дыр в скриптах, т.е. они не тормозят.


Цитата:
Там ведь можно запрещать индекс ботам а можно и разрешать.

Там можно запрещать доступ по IP. Индексацией управляет файл Robots.txt.


Цитата:
Вообще кто это сделал реально узнать ?

Нет. Можно узнать только их IP-адреса, записанные в логах доступа.


Цитата:
а если написать заявления в милицию, будет этому челу что ни будь ?

Не смеши меня. У тебя заявление не примут.
Автор: newbies
Дата сообщения: 15.04.2009 08:13
по поводу заявления, это я так узнал. ведь есть люди которые работают над всяким таким ! инетовским .

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

ну так есть боты которые мимо этого файла Robots.txt идут .
вот чел сказал что направил ботов на меня кучу и сайт сложился.

Добавлено:
как правильно можно ип запретить ?

это мол разрешить.

order allow deny
deny from all
allow from 192.126.12.199

Запретить доступ с определенного ip:
order allow deny
deny from all
deny from <ваш ip>

а как сделать что бы чел мог на главную зайти но а по разделам не мог заходить.
Автор: PEDKA
Дата сообщения: 15.04.2009 10:07
newbies

Цитата:
ну так есть боты которые мимо этого файла Robots.txt идут .

Этот файл читают только поисковые боты.


Цитата:
как правильно можно ип запретить ?

Ну ты же написал сам.


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

Например, так:


Код: RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L,QSA]
Автор: newbies
Дата сообщения: 15.04.2009 10:40
я имел ввиду что бы определился его ип и он смог на главную зайти но а когда пытался зайти в какой либо раздел его перекидывало на главную.


это что за команда ?
RewriteEngine On
Автор: PEDKA
Дата сообщения: 15.04.2009 11:26
newbies

Цитата:
это что за команда ?

В мануале это есть.


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

Сейчас так и есть, только IP не определяется.

IP ты можешь в скриптах определить.
Автор: newbies
Дата сообщения: 15.04.2009 12:48
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L,QSA]

а где тут ип писать ?
Автор: PEDKA
Дата сообщения: 15.04.2009 13:02
newbies

Цитата:
а где тут ип писать ?

Чей IP?
Автор: newbies
Дата сообщения: 15.04.2009 14:10
ну как чей , того чела который будет на сайт заходить, допустим он нафлудил, наспамил и т.д
я взял его ип запихал , сделал что бы он входил на главную, но когда пытался зайти на другие страницы, его перекидывало назад на главную.
Автор: PEDKA
Дата сообщения: 15.04.2009 14:36
newbies
Например, так:


Код:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REMOTE_ADDR} ^127.0.0.1
RewriteRule ^(.*)$ index.php [L,QSA]
Автор: feodus
Дата сообщения: 16.04.2009 13:55
Подскажите пожалуйста где я облажался ;-(
------------------------------------------------
<IfModule mod_rewrite.c>
RewriteEngine On
Options +FollowSymlinks
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php[L]

RewriteCond %{HTTP_REFERER} ^http://(www.)?bad\.site\.net/.*$ [NC]
RewriteRule ^/$ http://www.tosite.com[L]
</IfModule>
------------------------------------------------

Мне нужно чтоб посетитель пришедший по ссылке с сайта www.bad.site.net сразу переходил на tosite.com.

А система вылетает в 500 ошибку когда я сам проверяю и кликаю на ссылку ( на мой сайт) на сайте www.bad.site.net
Автор: Cheery
Дата сообщения: 16.04.2009 18:57
feodus

Цитата:
А система вылетает в 500 ошибку когда я сам проверяю и кликаю на ссылку

ну так читайте error.log - там 500 ошибки описаны

Цитата:
/index.php[L]

пробел между URL и [L]


Цитата:
http://www.tosite.com[L]

аналогично

Цитата:
RewriteRule ^/$

какие запросы вы собираетесь "отлавливать" этим правилом?
Автор: newbies
Дата сообщения: 17.04.2009 11:09
а все эти настройки для всяких там логов, отлова, сайт грузить не будут ?
Автор: booro
Дата сообщения: 17.04.2009 12:26
Как преобразовать ссылки вида /catalog.html?page=shop.browse&category_id=43 в /catalog/category=43

RewriteRule ^catalog.html?page=shop.browse&category_id=([0-9]+)$ /catalog/category=$1 [L] ничего не дает.
Автор: Cheery
Дата сообщения: 17.04.2009 19:01
newbies

Цитата:
а все эти настройки для всяких там логов, отлова, сайт грузить не будут ?

смотря сколько и смотря где. в целом - нет

booro

Цитата:
Как преобразовать ссылки вида

обычно стараются преобразовать обратно. в любом случае такого
Цитата:
/catalog/category=43

быть не может.. символа = в URL быть не должно, только в аргументах
Автор: Expert LTD
Дата сообщения: 28.04.2009 13:40
Подскажите.
Что есть: Есть сайт http://mysite.com/, когда пользователь вводит данную ему ссылку (например: http://mysite.com/reff/ или http://mysite.com/reff со и без слеша на конце), его перекидавает на /link/index.php?i=$1 и оттуда идет редирект на другой сайт. Скрипт редиректа находиться в папке link.

В корне сайта лежит .htaccess, вот его содержимое:

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_URI} (.*)$
RewriteRule (.*)$ /link/index.php?i=$1
RewriteCond %{REQUEST_URI} (.*)/$
RewriteRule (.*)/$ /link/index.php?i=$1

Что надо:Сделать так чтобы index.php(html) находящийся в корне сайта отображался, а не редиректил сразу же.
http://mysite.com/index.php

ЗЫ В настоящее время при заходе на http://mysite.com/ редиректит сразу на http://mysite.com/link/
Автор: Cheery
Дата сообщения: 28.04.2009 18:27

Цитата:
RewriteCond %{REQUEST_URI} (.*)$
RewriteRule (.*)$ /link/index.php?i=$1
RewriteCond %{REQUEST_URI} (.*)/$
RewriteRule (.*)/$ /link/index.php?i=$1

Вы понимаете, что тут два раза написано одно и то же?
должно быть
RewriteCond %{REQUEST_URI} !^/index\.php$
RewriteRule (.*)$ /link/index.php?i=$1
Автор: Expert LTD
Дата сообщения: 29.04.2009 03:02

Цитата:
Вы понимаете, что тут два раза написано одно и то же?
должно быть


Написано, как мне кажется все правильно. Двумя способами, потому что так требует скрипт. Вашим же методом, если ввести ссылку с / на конце, то редиректа нет, а если без / , то редирект идет.


Цитата:
RewriteCond %{REQUEST_URI} !^/index\.php$
RewriteRule (.*)$ /link/index.php?i=$1


Прошу прошения, не так пояснил в предыдушем своем посте. При заходе на http://mysite.com/ должно срабатывать http://mysite.com/index.php, f не http://mysite.com/link/index.php.
Как вы показали пример: При заходе на http://mysite.com/ вылетает ошибка Internal Server Error, а если ввести http://mysite.com/index.php - то все нормально.
Автор: Cheery
Дата сообщения: 29.04.2009 03:06
Expert LTD

Цитата:
Написано, как мне кажется все правильно. Двумя способами, потому что так требует скрипт. Вашим же методом, если ввести ссылку с / на конце, то редиректа нет, а если без / , то редирект идет.

ой, ну елки..
тогда так
RewriteCond %{REQUEST_URI} (.*)/?$
RewriteRule (.*)/?$ /link/index.php?i=$1
одна запись, заменяющая те две.

итого..

RewriteCond %{REQUEST_URI} !^/index\.php$
RewriteCond %{REQUEST_URI} !^/$
RewriteRule (.*)/?$ /link/index.php?i=$1 [L]
Автор: Expert LTD
Дата сообщения: 29.04.2009 14:42
Спасибо большое. Заработало.
Автор: DarkSmoke
Дата сообщения: 03.05.2009 11:51
Ребята, извините, за ламерский вопрос. Но не как сам справится не могу.
есть файлы index.php, feedback.php, law.php. Если лазить по этим страничкам, то ссылки принемают значение law.php?id=2 к примеру. Вот не как не могу понять сути как это сделать.. читал статьи которые в шапки уже по два раза,. Я так понимаю что регулярное выражение надо, но что то не получается у меня.
Может кто разжует мне?
А хочу чтобы был вид law.php/2.html

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445

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


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