[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: mod rewrite
maximka787
Привет мужики. помогите получить в переменную url все что пишется после
www.mysite.ru/XXXXXX

Сейчас сделано так
RewriteRule ^([0-9A-Za-z]+)$ /index.php?url=$1

там только буквы и цифры, попозже сам добавлю знаки прочие, а потом буду проверять по базе URL и дальше генерировать скрипт нужным образом.



Спустя 4 минуты, 13 секунд (5.07.2011 - 10:19) ИНСИ написал(а):
maximka787 а что именно тебе подсказать? Ты вроде сам все уже сделал

Спустя 2 минуты, 33 секунды (5.07.2011 - 10:22) maximka787 написал(а):
INSIDIOUS
ну да, а я как-то видел, что используют по-другому правила, что-то типа:
RewriteRule ^.$
RewriteRule ^{}$

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

Спустя 3 минуты, 18 секунд (5.07.2011 - 10:25) Metatron написал(а):
code-igniter использует что-то типа ^(.+)$ index.php/$1 [L]

а лишние символы уже в скриптах убираются

Спустя 1 час, 48 минут, 9 секунд (5.07.2011 - 12:13) maximka787 написал(а):
Что-то я сегодня чайник, Помогите ребят добавить в УРЛ слэш и точку

RewriteRule ^([0-9A-Za-z_-]+)$ /index.php?url=$1

Спустя 1 минута, 39 секунд (5.07.2011 - 12:15) DySprozin написал(а):
maximka787
экранируем, товарищ, экранируем (;
\.
\\
\/

Спустя 3 минуты, 10 секунд (5.07.2011 - 12:18) maximka787 написал(а):
DySprozin
Вообще ошибка 500
RewriteRule ^([0-9A-Za-z_\.\\]+)$ /index.php?url=$1

Спустя 2 минуты, 58 секунд (5.07.2011 - 12:21) DySprozin написал(а):
maximka787
смотри error_log - синтаксис верный (только что проверил), возможно бесконечное перенаправление, как тут

Спустя 12 минут, 30 секунд (5.07.2011 - 12:34) maximka787 написал(а):
Вот весь файл

php_flag display_errors on
Options -Indexes
DirectoryIndex index.php

RewriteEngine on

## error 500
##RewriteRule ^([0-9A-Za-z_\.\\]+)$ /index.php?url=$1

## error 500
RewriteRule ^([0-9a-zA-Z._\-]+)$ /index.php?url=$1
ТУТ ВСЕ НОРМАЛЬНО, НО ТОЧКУ НЕ МОГУ ПОСТАВИТЬ

## тут все отлино, но сайт выводит столько раз сколько include
##RewriteRule ^(.*)$ index.php?ur=$1 [L,QSA]


а в скрипте index.php только print_r($_GET);

Спустя 33 минуты, 11 секунд (5.07.2011 - 13:07) maximka787 написал(а):
Ребят, решил использовать
RewriteRule ^(.*)$ index.php?fullurl=$1 [L,QSA]

это вообще то что надо. но теперь проблема, не открываются файлы например
http://localhost/style.css
http://localhost/ и тд
ни один файл не открывается вообще, что это за такая проблема-то?

Спустя 4 минуты, 47 секунд (5.07.2011 - 13:12) DySprozin написал(а):
maximka787
я же тебе уже давал совет (;

RewriteEngine on
RewriteCond %{QUERY_STRING} =""
RewriteRule ^([0-9A-Za-z_\.\\]+)$ /index.php?url=$1


Цитата ( http://phpforum.ru/index.php?showtopic=471...=0#entry1234007 )

но это не спасет, если кто-то наберет http://site.ru/index.php?z=bla-bla-bla

т.е. надо это уже будет как-то на уровне пхп учесть, например:

if (!preg_match('#^kat=0&url=.*$#isU', $_SERVER['QUERY_STRING'])) {
Header('Location: /index.php');
exit();
}

Спустя 2 минуты, 19 секунд (5.07.2011 - 13:14) DySprozin написал(а):
в твоем случае это в php надо учесть так:

if (!preg_match('#^url=.*$#isU', $_SERVER['QUERY_STRING'])) {
Header('Location: /index.php');
exit();
}

Спустя 1 минута, 41 секунда (5.07.2011 - 13:16) maximka787 написал(а):
DySprozin
Хороший пример. Ладно буду пробовать. Проблема не пойму из-за include

в футере стоит include , после него он сайт выводит пока я не остановлю, по нескольку раз.

Спустя 5 минут, 54 секунды (5.07.2011 - 13:21) DySprozin написал(а):
maximka787
RewriteEngine on
RewriteCond %{QUERY_STRING} =""
RewriteRule ^(.*)$ /index.php?url=$1


if (!preg_match('#^url=.*$#isU', $_SERVER['QUERY_STRING'])) {
Header('Location: /index.php');
exit();
}

Спустя 2 часа, 1 минута, 15 секунд (5.07.2011 - 15:23) maximka787 написал(а):
Неее, все перепробовал. Все перечитал. как буд-то у меня у одного дебила такое.
Нельзя делать как писалDySprozin хотя и вариант верный, но у меня сайт не с нуля, и там есть свои проблемы.

Подскажите кто знает откуда такая ошибка 500
Цитата
Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.


Вот это выражение дает
RewriteRule ^([0-9a-zA-Z/.+]+)$ /index.php?url=$1


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

тк у меня url
contacts/
magazin/
magazin/20.php

Спустя 4 минуты, 51 секунда (5.07.2011 - 15:28) DySprozin написал(а):
и чем тебя вариант не устраивает?

RewriteEngine on
RewriteCond %{QUERY_STRING} =""


;;ошибка 500
*терпеливо* ну я же говорю тебе: когда ты ставишь точку, то у тебя получается бесконечное перенаправление...

вот было у тебя:

www.mysite.ru/XXXXXX.yy - тут есть точка

стало:

www.mysite.ru/index.php?url=XXXXXX.yy - в index.php есть точка

идем дальше:
стало:

www.mysite.ru/index.php?url=index.php - в index.php есть точка

стало:

www.mysite.ru/index.php?url=index.php - в index.php есть точка

стало:

www.mysite.ru/index.php?url=index.php - в index.php есть точка

стало:

www.mysite.ru/index.php?url=index.php - в index.php есть точка

стало:

www.mysite.ru/index.php?url=index.php - в index.php есть точка

стало:

www.mysite.ru/index.php?url=index.php - в index.php есть точка

стало:

www.mysite.ru/index.php?url=index.php - в index.php есть точка

стало:

www.mysite.ru/index.php?url=index.php - в index.php есть точка

стало:

www.mysite.ru/index.php?url=index.php - в index.php есть точка

стало:

www.mysite.ru/index.php?url=index.php - в index.php есть точка

Спустя 8 минут, 46 секунд (5.07.2011 - 15:36) maximka787 написал(а):
DySprozin
ну я повешусь наверно.
смысл в чем. мне надо получить вообще все что попадает после .ru

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

Спустя 2 минуты, 25 секунд (5.07.2011 - 15:39) DySprozin написал(а):
maximka787
то есть тебе нужно не корневой индекс брать, а индекс данной папки?

Спустя 3 минуты, 28 секунд (5.07.2011 - 15:42) maximka787 написал(а):
DySprozin
мне надо чтобы если папка существует то попадал в нее и дальше как пойдет само, если нет то индекс вызывает.

внутри папки тоже есть индекс свой в стиле DirectoryIndex index.php и больше ничего, это не играет роли в моем примере.

Например у меня RewriteRule ^myfolder/$ /index.php?kat=myfolder попадает сначала в директорию, а если ее нет то на index.php


Спустя 3 минуты, 42 секунды (5.07.2011 - 15:46) DySprozin написал(а):
maximka787
хм... а если папка есть, но файла в папке нет?

Спустя 1 минута, 15 секунд (5.07.2011 - 15:47) maximka787 написал(а):
DySprozin
да будет файл там)) это вообще второстепенное) главное чтобы папку отличил от url

Спустя 11 минут, 55 секунд (5.07.2011 - 15:59) DySprozin написал(а):
maximka787
так?

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /index.php?url=$1

Спустя 7 минут, 47 секунд (5.07.2011 - 16:07) maximka787 написал(а):
DySprozin
УРАААА))) вот то, что надо, спасибо большое, я то эту запись тящу раз видел сегодня и думал что она относится к файлам каким-то)

Спустя 1 минута, 40 секунд (5.07.2011 - 16:09) DySprozin написал(а):
maximka787
да наздоровье (;


_____________
..Работает - не трогай!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.