проблема с mod rewrite

12
W
На сайте с 08.03.2008
Offline
45
1080

Разобрался на днях с этим модулем (mod rewrite), какой замечательный модуль неправда ли? Но PHP скрипт который я пишу не для единичного использования и будет распологаться на разних хостах и в РАЗНЫХ ДЕРИКОРИЯХ. При нескольких гет переменных передаваемых в URL через mod rewrite (типа http://site.ru/php/2 что является http://site.ru/index.php?a=php&b=2) относительные URL (типа php/2) уже не канают и приходится выставлять абсолютные URL (типа http://site.ru/php/2).

Проблема в следущем...

ЕСли человек закачал скрипт в дерикторию /x, получается скрипт доступен по адресу http://site.ru/x/. А при вызове любой ссылки например http://site.ru/x/php/2 mod rewrite преобразует ее в http://site.ru/index.php?a=php&b=2, то есть текущая дерикория не учитывается.

А если не в дирекории скрипт лежит, то все замечатьльно конечно же .

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

R2
На сайте с 01.02.2007
Offline
28
#1
Wincert:
относительные URL (типа php/2) уже не канают и приходится выставлять абсолютные URL (типа http://site.ru/php/2).

Не понял... :(

Wincert:
при вызове любой ссылки например http://site.ru/x/php/2 mod rewrite преобразует ее в http://site.ru/index.php?a=php&b=2, то есть текущая дерикория не учитывается.

А почему не учитывается?

Почему не преобразовывать в

http://site.ru/x/index.php?a=php&b=2

или в

http://site.ru/index.php?a=php&b=2&dir=x

W
На сайте с 08.03.2008
Offline
45
#2

Сообщение от Wincert
относительные URL (типа php/2) уже не канают и приходится выставлять абсолютные URL (типа http://site.ru/php/2).


Не понял...

Ну если надо обратиться к странице http://site.ru/php/2 например со страници http://site.ru/css, то при выставлении относительного URL (типа php/2) получим примерно следующее: http://site.ru/css/php/2. Поэтому приходится выставлять абсолютные URL.


Сообщение от Wincert
при вызове любой ссылки например http://site.ru/x/php/2 mod rewrite преобразует ее в http://site.ru/index.php?a=php&b=2, то есть текущая дерикория не учитывается.


А почему не учитывается?
Почему не преобразовывать в
http://site.ru/x/index.php?a=php&b=2
или в
http://site.ru/index.php?a=php&b=2&dir=x

Скрипт пишу так сказать не для единичного спользования, им будут пользоваться разные люди и на разных хостах и скрипт должен быть универсален. А каждому объяснять как работает модуль mod rewrite нехочется. То есть человек может залить скрипт в корень сайта, а может залить и в какуюнибудь папку например x/ или x/site/, в этом вся и проблема.

[Удален]
#3

парни, учите хтмл :)

<base href="http://www.site.ru/" />

;)

тут не в модуле дело, а в браузере :)

W
На сайте с 08.03.2008
Offline
45
#4

так вот и надо с помощью модуля решить проблему браузера.

[Удален]
#5

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

F
На сайте с 22.12.2005
Offline
48
#6
Wincert:
Ну если надо обратиться к странице http://site.ru/php/2 например со страници http://site.ru/css, то при выставлении относительного URL (типа php/2) получим примерно следующее: http://site.ru/css/php/2. Поэтому приходится выставлять абсолютные URL.

Ставьте относительные ссылки от корня сайта, т.е. не php/2, а /php/2

Наслаждение жизнью - это искусство
[Удален]
#7

либо как флейм предложил :)

либо впишите этот корень для сайта через <base fre="http://www.name.ru/" />

W
На сайте с 08.03.2008
Offline
45
#8
Flame:
Ставьте относительные ссылки от корня сайта, т.е. не php/2, а /php/2

Проблема не в этом,

проблема вот в чем:

ЕСли человек закачал скрипт в дерикторию /x, получается скрипт доступен по адресу http://site.ru/x/. А при вызове любой ссылки например http://site.ru/x/php/2 mod rewrite преобразует ее в http://site.ru/index.php?a=php&b=2, то есть текущая дерикория не учитывается.
А если не в дирекории скрипт лежит, то все замечатьльно конечно же .
Есть ли какойто вариант чтобы скрипт корректно работал в дерикториях и без них???
[Удален]
#9

используйте

RewriteBase /x

--- тут остальные правила для этой директории ---

либо RewriteRule /php/x x/index.php?asda&ada&sadads&sadasd

W
На сайте с 08.03.2008
Offline
45
#10
bearman:
используйте
RewriteBase /x

--- тут остальные правила для этой директории ---

либо RewriteRule /php/x x/index.php?asda&ada&sadads&sadasd

Вы опять непоняли...

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

Мне вчера подсказали один действенный способ делать RewriteRule ^([a-z]+)$ /index.php и уже в php коде разбирать $_SERVER['REQUEST_URI'], но чето мне не хочется переделывать скрипт. У меня там все на гетах завязанно. Есть ли другой выход??

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий