Бесплатная CMS  - Limbo CMS (система управления сайтом)
Главная arrow Всё о LURM (ЛУРМ)

Навигация
Сайт
Каталог
Материалы сайта

RSS

FAQ: mod_rewrite Версия для печати
18.02.2005 174441 Опубликовал: Serebro

Скачать mod rewrite для apache здесь [45Kb]

<!-- .t {font-family: Verdana, Arial; font-size: 1.3em; font-weight: bold; padding-bottom: 5px;} .c {font-size: 1.1em} .n {font-family: Verdana, Arial; font-size: 0.8em; color: #000000; text-align: justify} .n2 {font-family: Verdana, Arial; font-size: 0.8em; text-align: justify} .b {font-family: Verdana, Arial; font-size: 0.8em; color: #000000; font-weight: bold} .s {font-family: Verdana, Arial; font-size: 0.7em} .g {font-family: Verdana, Arial; font-size: 0.7em; color: #606060} .g2 {font-family: Verdana, Arial; font-size: 0.85em; color: #606060} .z {color: black; background: #ffdfdf} .a.l:hover {color: #000000; text-decoration: underline} .l {text-decoration: none} -->
FAQ: mod_rewrite
Brass, 19.04.2004 13:19
Надо было преобразовать http://localhost/cblog/userlist.php?author=admin в http://localhost/cblog/userlist/admin
Я добился этого с помощью
код:

Options +FollowSymlinks
RewriteEngine on
RewriteBase /
RewriteRule ^(.*)userlist/(.*)$ $1userlist.php?author=$2 [NC]

Но теперь на этой страничке потерялось всё CSS так как ссылки на css/style.css стали видны как http://localhost/cblog/userlist/css/style.css и соответственно ко всем относительным ссылкам добавилось ненужное /userlist/
Очевидно это из за того что домашним каталогом теперь считается несуществующий http://localhost/cblog/userlist/
Как разрешить эту проблему?

1. Kirill-B, 19.04.2004 13:25
Brass
Мне кажется самое простое и логичное в данном случае хранить все таблицы css в одном месте, в директории styles, созданной в корне сайта (по аналогии с images) и обращаться к этой таблице /styles/styles.css

2. Brass, 19.04.2004 13:34
Kirill-B
То есть ты хочешь сказать единственный выход - абсолютные пути
Но проблема в том что для моего хостинга абсолютные пути начинаются с нечто вроде /home/u135/vzxk.ru/www а локально же такого нет...
Хочется сразу писать, тестить и переносить не правя пути...

3. Kirill-B, 19.04.2004 13:59
Brass
То есть ты хочешь сказать единственный выход - абсолютные пути
Я предложил вариант решения

Но проблема в том что для моего хостинга абсолютные пути начинаются с нечто вроде /home/u135/vzxk.ru/www а локально же такого нет...
/styles/styles.css - путь, начиная с DOCUMENT_ROOT
Например, у меня на одной из машин DOCUMENT_ROOT = /opt/local/apache/htdocs, я создаю директорию /opt/local/apache/htdocs/styles и в html обращаюсь к ней /styles/styles.css.
На другой машине DOCUMENT_ROOT = /var/www, я создаю директорию /var/www/styles и, все равно, в html обращаюсь к ней /styles/styles.css

4. Нейтрон, 19.04.2004 14:05
Brass
код:
 Тут всё неправильно было.

 

5. Brass, 19.04.2004 14:32
Kirill-B
Ага, я разобрался сенкс.
Это верно, не надо было /home/u135/vzxk.ru/www добавлять, это я попутал чё то...

6. Нейтрон, 19.04.2004 14:32
Ой, чот я не так понял...
Фигово дело, вообще...
userlist у тебя теперь как бы директория и из путей её не убрать так легко...
код:
 RewriteRule ^/(.*)userlist/(.*)$ /$1userlist.php?author=$2 [NC]
RewriteRule ^/(.*)/userlist/css/(.*)$ /$1/css/$2 [NC]
RewriteRule ^/(.*)/userlist/img/(.*)$ /$1/img/$2 [NC]
...

И так для всех нужных внутренних директорий... Иначе можно, если у тебя author какую нибудь характеристическую особенность имеет. Например, если authоr начинается с "auth"
код:
 RewriteCond %{REQUEST_URI} ^/(.*)userlist/auth(.*)$
RewriteRule ^/(.*)userlist/(.*)$ /$1userlist.php?author=$2 [NC]
RewriteRule ^/(.*)/userlist/(.*)$ /$1/$2 [L]

 

Добавление от 19.04.2004 14:36:

В любом случае, лучше абсолютные пути к css файлам прописать и не нагружать mod_rewrite

К этой теме 19.04.2004 14:45 moderator-24 подклеил тему "Помогите с Mod_Rewrite" (автор: Lonely Ranger)

8. Lonely Ranger, 16.04.2004 14:44
В общем дело вот в чем: мне надо при запросе определенных страниц (даже не страниц а урл) запускать скрипт
RewriteRule ^(auth|search|reg)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+) /cgi-bin/$1.pl?$2&$3&$4&$5&$6&$7&$8&$9 [T=application/x-httpd-cgi,L]
Но он хочет запустить скрипт из директории WWW, а не CGI-BIN. Приходится дописывать так RewriteRule ^(auth|search|reg)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+) /cgi-bin/$1.pl?$2&$3&$4&$5&$6&$7&$8&$9 [T=application/x-httpd-cgi,L,C]
Options +ExecCGI

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

9. Kirill-B, 16.04.2004 14:56
Lonely Ranger
Самый действенный способ в таких случаях включить уровень логов 9 и больше
и смотреть в них. Там подробно пишется, что получил, как понял и тд.
RewriteLogLevel n

10. Brass, 16.04.2004 15:10
почему то мне кажется дело в RewriteBase

11. Lonely Ranger, 16.04.2004 15:12
Kirill-B
Попробую посмотреть

Brass
а если конкретней?

А может быть кто-то что-то уже делал?

12. Нейтрон, 19.04.2004 14:43
Lonely Ranger
Во-первых, мне кажется, что надо ^/(auth|search|reg)...
А во-вторых мне не совсем ясна необходимость в [T=application/x-httpd-cgi,L,C]
Попробуй написать так:

RewriteRule ^/(auth|search|reg)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+) /cgi-bin/$1.pl?$2&$3&$4&$5&$6&$7&$8&$9

 

Добавление от 19.04.2004 16:57:

Раз уж тему обозваои FAQ, то дам тут две хорошие и полезные, на мой взгляд, ссылочки с наглядными примерами для частных ситуаций.
Руководство по URL преобразованиям (http://www.egoroff.spb.ru/portfolio/apache/rewriteguide.html)
Модуль Apache mod_rewrite (http://www.egoroff.spb.ru/portfolio/apache/mod_rewrite.html)

13. Lonely Ranger, 19.04.2004 18:14
Нейтрон
Нифига не хочет он заходить в cgi-bin, всё время пытается из www запустить скрипт. Да и параметры не передаются так как хочется.
Строку http://localhost/reg/step=2/ должен преобразовать в такую http://localhost/cgi-bin/reg.pl?step=2 но не получается, даже в такой вид не хочет http://localhost/reg.pl?step=2 .

Я по тем ссылкам и работал, вернее взял за основу. Но получается не совсем как я хочу. Может быть я хочу невозможного, т.е. он так прямо делать не может?

 

14. Kirill-B, 19.04.2004 18:27
Lonely Ranger
Похоже /reg/step=2/ не матчится с
^/(auth|search|reg)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+).
Там вооооооон сколько слэшей должно быть
Говорю же, RewriteLogLevel 9+ и консультируйтесь с логами, они там очень понятные

15. Lonely Ranger, 19.04.2004 19:03
Kirill-B
Тогда помоги разобраться с логами, я что-то не врублюсь:

127.0.0.1 - - [19/Apr/2004:19:10:21 +0400] [localhost/sid#9770d8][rid#a4d4f0/initial] (3) [per-dir w:/home/localhost/www/] add path-info postfix: w:/home/localhost/www/reg.pl -> w:/home/localhost/www/reg.pl/step=2/
127.0.0.1 - - [19/Apr/2004:19:10:21 +0400] [localhost/sid#9770d8][rid#a4d4f0/initial] (3) [per-dir w:/home/localhost/www/] strip per-dir prefix: w:/home/localhost/www/reg.pl/step=2/ -> reg.pl/step=2/
127.0.0.1 - - [19/Apr/2004:19:10:21 +0400] [localhost/sid#9770d8][rid#a4d4f0/initial] (3) [per-dir w:/home/localhost/www/] applying pattern '^(sid[^/]+)/(.+)$' to uri 'reg.pl/step=2/'
127.0.0.1 - - [19/Apr/2004:19:10:21 +0400] [localhost/sid#9770d8][rid#a4d4f0/initial] (3) [per-dir w:/home/localhost/www/] add path-info postfix: w:/home/localhost/www/reg.pl -> w:/home/localhost/www/reg.pl/step=2/
127.0.0.1 - - [19/Apr/2004:19:10:21 +0400] [localhost/sid#9770d8][rid#a4d4f0/initial] (3) [per-dir w:/home/localhost/www/] strip per-dir prefix: w:/home/localhost/www/reg.pl/step=2/ -> reg.pl/step=2/
127.0.0.1 - - [19/Apr/2004:19:10:21 +0400] [localhost/sid#9770d8][rid#a4d4f0/initial] (3) [per-dir w:/home/localhost/www/] applying pattern '^/(auth|search|reg)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)' to uri 'reg.pl/step=2/'
127.0.0.1 - - [19/Apr/2004:19:10:21 +0400] [localhost/sid#9770d8][rid#a4d4f0/initial] (1) [per-dir w:/home/localhost/www/] pass through w:/home/localhost/www/reg.pl

Кстати, а не всё ли равно сколько слэшей? Я просто хотел чтобы я мог с разных вариациях вызывать этот скрипт. Теперь получается, что я должен что-то конкретное задавать? Если нет ничего - то пусто "//" - так?

16. Kirill-B, 20.04.2004 09:39
Lonely Ranger
Подождь, это какой-то не тот лог. Нужен типа такого:
RewriteLogLevel 9
RewriteLog "/usr/local/var/apache/logs/rewrite.log"

17. Lonely Ranger, 20.04.2004 10:30
Вот с 9 уровнем

127.0.0.1 - - [20/Apr/2004:11:26:13 +0400] [localhost/sid#9770d8][rid#a4d4f0/initial] (3) [per-dir w:/home/localhost/www/] add path-info postfix: w:/home/localhost/www/reg.pl -> w:/home/localhost/www/reg.pl/step=2/
127.0.0.1 - - [20/Apr/2004:11:26:13 +0400] [localhost/sid#9770d8][rid#a4d4f0/initial] (3) [per-dir w:/home/localhost/www/] strip per-dir prefix: w:/home/localhost/www/reg.pl/step=2/ -> reg.pl/step=2/
127.0.0.1 - - [20/Apr/2004:11:26:13 +0400] [localhost/sid#9770d8][rid#a4d4f0/initial] (3) [per-dir w:/home/localhost/www/] applying pattern '^(sid[^/]+)/(.+)$' to uri 'reg.pl/step=2/'
127.0.0.1 - - [20/Apr/2004:11:26:13 +0400] [localhost/sid#9770d8][rid#a4d4f0/initial] (3) [per-dir w:/home/localhost/www/] add path-info postfix: w:/home/localhost/www/reg.pl -> w:/home/localhost/www/reg.pl/step=2/
127.0.0.1 - - [20/Apr/2004:11:26:13 +0400] [localhost/sid#9770d8][rid#a4d4f0/initial] (3) [per-dir w:/home/localhost/www/] strip per-dir prefix: w:/home/localhost/www/reg.pl/step=2/ -> reg.pl/step=2/
127.0.0.1 - - [20/Apr/2004:11:26:13 +0400] [localhost/sid#9770d8][rid#a4d4f0/initial] (3) [per-dir w:/home/localhost/www/] applying pattern '^/(auth|search|reg)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)' to uri 'reg.pl/step=2/'
127.0.0.1 - - [20/Apr/2004:11:26:13 +0400] [localhost/sid#9770d8][rid#a4d4f0/initial] (1) [per-dir w:/home/localhost/www/] pass through w:/home/localhost/www/reg.pl

Но кажется, что он не отличается от того, что я давал раньше. (я заменил домен на localhost). Всё это работает на локальной машине. Апач собран от Денвера. Может быть тут в чем дело?

18. Kirill-B, 20.04.2004 10:47
Lonely Ranger
Ничего не пойму, я таких логов от mod_rewrite никогда не видел.
Это случайно не access.log ?

19. Brass, 20.04.2004 11:19
Kirill-B
Нет, самый он.
У меня такой же...

20. Joshua5, 20.04.2004 11:30
это логи 2-го апача, если я ничего не путаю
странно только что нет строчек 'matched' или 'not matched' после 'applying pattern' - нельзя понять, подошёл ему шаблон или нет

21. Kirill-B, 20.04.2004 11:40
Joshua5
Во! Я об этих же строчках

К этой теме 20.04.2004 11:49 moderator-24 подклеил тему "Как грамотно использовать .htaccess?" (автор: terex)

23. terex, 19.04.2004 18:30
Сайт имеет древовидную структуру, причём каждая ветка дерева физически отображается папкой файловой системы. В каждой папке есть /index.php, который должен исполняться в результате запросов вида http://site.my/one/two/page_id.html, причём ему должен быть передан параметр page_id. При этом все остальные запросы должны вызывать стандартный обработчик error 404 (устанавливается посредством .htaccess в корне сайта).

Сейчас делаю так. В каждую папку кладу свой .htaccess и пишу в нём следующее:
код:

RewriteEngine On
RewriteBase /one/two/
RewriteRule ^(\d+).html$ /index.php/id/$1

И всё работает Понимаю, что от добра добра не ищут, но тем не менее. Думается, можно аналогичную логику реализовать одним единственным .htaccess, расположенным в корне сайта. Однако как именно - догадаться не могу.

Поможете?

24. Хитачик, 19.04.2004 19:07
А почему б уважаемому не задать вопрос в теме по mod_rewrite: FAQ: mod_rewrite - все вопросы обсуждаем тут (http://forum.ixbt.com/topic.cgi?id=24:29519)

25. Lonely Ranger, 19.04.2004 19:08
А если так попробовать

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-s
RewriteRule ^([^/]+)/(\d+).html$ /index.php/id/$2/path/$1

26. Хитачик, 19.04.2004 19:11
Насколько я знаю RegExp'ы, я бы написал что-то типа такого:
код:
RewriteRule ^(.+)/(\d+).html$ $1/index.php?id=$2

Но я никогда не работал с mod_rewrite, а посему не уверен, правильно ли это.

27. Нейтрон, 19.04.2004 20:55
Что-то всех на mod_rewrite потянуло...
код:
RewriteRule ^/(.+)/(\d+).html$ /$1/index.php?id=$2

Всё. Больше ничего не нужно.

28. Хитачик, 19.04.2004 21:48
Нейтрон а чем мой вариант от твоего отличается?

29. Нейтрон, 20.04.2004 02:08
Хитачик
Ну, ничем особенно

30. Ortick, 20.04.2004 07:01
Action throw /index.php


ForceType throw



ForceType application/x-httpd-php


Такой вариант более предпочтителен, т.к. нагрузки меньше и POST запросы пропускает.
В данном случае все запросы из браузера без расширения (http://site.my/one/two/page_id) будут отдаваться /index.php, расположенного в корне, а там уже обрабатывать запрос.
Единственное, PHP должен быть установлен как модуль апача.
Ну и ест-но можно сделать и так что все файлы с расш. html также будут отдаваться на съедение index.php...

31. Lonely Ranger, 20.04.2004 11:57
Нет, это логи не 2 апача. Вот что он выдал.
SERVER_SOFTWARE=Apache/1.3.27 (Win32) PHP/4.3.0
Видимо в Денвере как-то обрезаны функции mod_rewrite.
Ладно, Вы мне скажите такую вещь: если в правиле указано, например 3 слеша ^(reg)/([^/]+)/([^/]+)/([^/]+)/ то я и 3 должен прямо указать в перезаписи /cgi-bin/$1.pl?p1=$2&p2=$3&p3=$4 . Кстати написать именно так и не /cgi-bin/$1.pl?$2&$3&$4 (просто таким образом хотел написать скажем такую ссылку http://localhost/reg/login=vasya/pass=123/sid=321/ и чтобы запустился скрипт сруз с параметрами http://localhost/cgi-bin/reg.pl?login=vasya&pass=123&sid=321).
Еще остался вопрос: почему он хочет запустить скрипт из www, а не из cgi-bin, как это написано?

32. Kirill-B, 20.04.2004 12:15
Lonely Ranger
Короче, ради такого дела, компильнул апач+мод_рерайт
Как я и предполагал, дело оказалось в неверном паттерне.
Могу предложить свой вариант безо всяких извращений:
RewriteRule ^(auth|search|reg)/(.*)$ /cgi-bin/$1.pl?$2 [T=application/x-httpd-cgi,L]

33. Joshua5, 20.04.2004 12:16
Lonely Ranger

если в правиле указано, например 3 слеша ^(reg)/([^/]+)/([^/]+)/([^/]+)/ то я и 3 должен прямо указать в перезаписи /cgi-bin/$1.pl?p1=$2&p2=$3&p3=$4

не обязательно
можешь использовать столько переменных, сколько хочешь - одну или все

Кстати написать именно так и не /cgi-bin/$1.pl?$2&$3&$4

ну, если ты сам парсишь QUERY_STRING, то пофиг

почему он хочет запустить скрипт из www, а не из cgi-bin

а ты Alias прописал?

34. Lonely Ranger, 20.04.2004 14:41
Joshua5
Alias прописан, скрипты запускаются, если написать http://localhost/cgi-bin/1.pl

Kirill-B
Я хотел чтобы апач сам при помощи mod_rewrite делал парсинг таким вот преобразованием (см. выше). А так получится, что надо написать процедурку для парсинга.

35. Kirill-B, 20.04.2004 15:04
Lonely Ranger
Ну замени ты все слэши в QUERY_SRTING на & и все будет ok

36. Lonely Ranger, 20.04.2004 15:37
Kirill-B
Прикол - не передаётся-то QUERY_SRTING, а вот REQUEST_URI есть

COMSPEC=C:\WINDOWS\system32\cmd.exe
DOCUMENT_ROOT=w:/home/mpg3/www
GATEWAY_INTERFACE=CGI/1.1
HTTP_ACCEPT=*/*
HTTP_ACCEPT_ENCODING=gzip, deflate
HTTP_ACCEPT_LANGUAGE=ru
HTTP_CACHE_CONTROL=no-cache
HTTP_CONNECTION=Keep-Alive
HTTP_HOST=mpg3
HTTP_USER_AGENT=Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
PATH=\usr\local\apache\..\php;
\usr\local\apache\..\php\extensions;
\usr\local\apache\..\php\dlls;
C:\WINDOWS\system32;
C:\WINDOWS;
C:\WINDOWS\System32\Wbem;
w:\usr\bin
PATH_INFO=/step=2/
PATH_TRANSLATED=w:\home\mpg3\www\step=2\
QUERY_STRING=
REMOTE_ADDR=127.0.0.1
REMOTE_PORT=1040
REQUEST_METHOD=GET
REQUEST_URI=/reg/step=2/
SCRIPT_FILENAME=w:/home/mpg3/www/reg.pl
SCRIPT_NAME=/reg
SERVER_ADDR=127.0.0.1
SERVER_ADMIN=webmaster@localhost
SERVER_NAME=mpg3
SERVER_PORT=80
SERVER_PROTOCOL=HTTP/1.1
SERVER_SIGNATURE=
Apache/1.3.27 Server at mpg3 Port 80
SERVER_SOFTWARE=Apache/1.3.27 (Win32) PHP/4.3.0
SYSTEMROOT=C:\WINDOWS
WINDIR=C:\WINDOWS

37. Нейтрон, 20.04.2004 15:46
Lonely Ranger
Сделай свою QUERY_SRTING из REQUEST_URI и распарсь её.

38. Kirill-B, 20.04.2004 15:48
Lonely Ranger
У меня все ОК
цитата:

mos150: /opt > telnet mos150 8080
Trying 158.140.175.150...
Connected to mos150.
Escape character is '^]'.
GET /reg/step=1/step=2
DOCUMENT_ROOT="/opt/httpd/htdocs"
GATEWAY_INTERFACE="CGI/1.1"
QUERY_STRING="step=1/step=2"
REDIRECT_QUERY_STRING="step=1/step=2"
REDIRECT_STATUS="200"
REDIRECT_URL="/reg/step=1/step=2"
REMOTE_ADDR="158.140.175.150"
REMOTE_PORT="40541"
REQUEST_METHOD="GET"
REQUEST_URI="/reg/step=1/step=2"
SCRIPT_FILENAME="/opt/httpd/cgi-bin/printenv.pl"
SCRIPT_NAME="/cgi-bin/printenv.pl"
SERVER_ADDR="158.140.175.150"
SERVER_ADMIN="kirill@cadence.com"
SERVER_NAME="local.server"
SERVER_PORT="8080"
SERVER_PROTOCOL="HTTP/0.9"
SERVER_SIGNATURE="
Apache/1.3.29 Server at local.server Port 8080
\n"
SERVER_SOFTWARE="Apache/1.3.29 (Unix) mod_perl/1.29"
Connection closed by foreign host.

 

39. Lonely Ranger, 20.04.2004 15:50
Нейтрон
А мне так этого не хотелось делать Видать придётся
Вот если бы еще из cgi-bin всё это запустить.

 

Добавление от 20.04.2004 15:53:

Kirill-B
ну может быть всётаки дело в том наборе, который я юзаю. На нормальном серваке (под линуксой) наверное нормально и работало бы. Надо бы проверить.
Хотелось сначала дома всё сделать, а потом просто перетащить на сервак (не очень удобно в мс работать, ну не так как в фаре, например).

40. Нейтрон, 20.04.2004 21:09
Lonely Ranger
с cgi-bin у тебя какая-то другая проблема. Как он задан в конфиге апача?

41. Lonely Ranger, 21.04.2004 08:07
Нейтрон
cgi-bin нормально работает, если напрямую написать в строке браузера http://localhost/cgi-bin/reg.pl он отрабатывает (это точно такой же скрипт, что находится и в www), а вот через mod_rewrite не хочет браться из cgi-bin

42. Kirill-B, 21.04.2004 09:53
Lonely Ranger
cgi-bin нормально работает, если напрямую написать в строке браузера http://localhost/cgi-bin/reg.pl он отрабатывает (это точно такой же скрипт, что находится и в www), а вот через mod_rewrite не хочет браться из cgi-bin
А рул в конфиге точно такой? (может забыл чего)
RewriteRule ^(auth|search|reg)/(.*)$ /cgi-bin/$1.pl?$2 [T=application/x-httpd-cgi,L]

43. Lonely Ranger, 21.04.2004 09:59
Kirill-B
В конфиг я пока ничего не прописывал. Думаешь стоит туда прописать?

44. Kirill-B, 21.04.2004 10:18
Lonely Ranger
Конфиг, в смысле .htaccess

45. Lonely Ranger, 21.04.2004 11:46
Kirill-B
Вот он какой
RewriteRule ^(auth|search|reg)/([^/]+)/$ /cgi-bin/$1.pl?$2 [QSA,T=application/x-httpd-cgi,L,R,C]
Options +ExecCGI
Но запускаться оттуда не хочет. Хочет из ВВВ

46. Нейтрон, 21.04.2004 12:07
Lonely Ranger
Так я не понял, у тебя один файл reg.pl или два? И где он(и) физически лежит(ат)? И как задан путь к cgi-bin в httpd.conf?

 

Добавление от 21.04.2004 12:11:

/home/site/cgi-bin
/home/site/www

DocumentRoot /home/site/www
ScriptAlias /cgi-bin/ "/home/site/cgi-bin/"

У тебя так?

47. Kirill-B, 21.04.2004 12:11
Lonely Ranger
R,C убертие, оно Вам не надо
QSA в данном случае тоже можно убрать

(строка, которую я Вам показал у меня отлично работает)

48. Нейтрон, 21.04.2004 12:23
Lonely Ranger
Если честно, я вообще не понимаю необходимость во всех этих флагах.
У меня прекрасно работает (через .htaccess) такое:
код:
RewriteEngine on
RewriteBase /hp/fanfiction/
RewriteRule ^review/([0-9]+)/revs$ /cgi-bin/review.cgi?action=review&article=$1 [L]
RewriteRule ^review/([0-9]+)/$ /cgi-bin/review.cgi?action=read&article=$1 [L]

49. Lonely Ranger, 21.04.2004 12:32
Нейтрон
вот настройки для хоста
код:


DocumentRoot "W:/home/mpg3/www"
ServerName "www.mpg3"
ServerAlias "mpg3" "www.mpg3"
ScriptAlias /cgi/ "/home/mpg3/cgi/"
ScriptAlias /cgi-bin/ "/home/mpg3/cgi-bin/"
ErrorLog "/home/mpg3/error.log"


Я просто скопировал копию скрипта из cgi-bin в www. Вот и всё. Я же говорю, что из cgi-bin не хочет брать и работать.

Скорее всего это всё из-за того что под виндой и сервер от Денвера. Сегодня-завтра попробую на нормальном под линуксом.

К этой теме 11.07.2004 14:48 moderator-bn подклеил тему "mod_rewrite apach'a и проблемы с ним" (автор: DiS)

51. DiS, 11.07.2004 13:55
Столкнулся я тут с такой проблемой: я написал РНР скрипт, который по входным данным $cat, $view, $off выбирает тхт файл ("content/" . $cat . "/" . $view . "_" . $off . ".txt") и вбивает его в html шаблон.

А проблема вот в чем... Как индексировать такой сайт в поисковиках? Выход я нашел почти сразу. Есть такой мод для апача - mod_rewrite. Он позволяет переписывать урлы по какому-то заданному правилу. Только есть один момент - сколько я ни бился - ничего у меня не вышло ... Доки по mod_rewrite привожу ниже. Ребята, помогите! Я в этих доках вообще ничего понять не могу...

http://detail.phpclub.net/2001-01-16.htm
http://detail.phpclub.net/2001-01-20.htm
http://sitemaker.ru/technologies/webserver/mod_rewrite3/

Надеюсь, вы с этим разберетесь...

Тема перенесена 11.07.2004 14:16 QZ из форума "Программирование"

53. Нейтрон, 11.07.2004 14:54
DiS
Ну, мы разобрались более-менее. Чем помочь то?
код:
RewriteEngine on
RewriteBase /content/
RewriteRule ^([a-z]+)/([a-z]+)/([0-9]+) /script.php?cat=$1&view=$2&off=$3 [L]

54. DiS, 12.07.2004 11:03
вроде все так =)

типа, адрес вида www.domain.com/content/gallery/gal_01.txt
будет переделан в script.php?cat=galley&view=gal&off=01

причем скрипт лежит в корне...

З.Ы. А что пробелов столько перед /sсript - так надо?

55. Joshua5, 12.07.2004 12:26
DiS

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

56. DiS, 12.07.2004 16:21
Простите за глупый вопрос (наверное ), но почему у меня нифига не работает и вообще, такое ощущение, что .htaccess не обрабатывается

З.Ы. Надо ли чтонить менять в httpd.conf для того, чтобы mod_rewrite работал? Ну, кроме раскомментивания соотв. строк

57. Joshua5, 12.07.2004 16:30
DiS

чтобы работал .htaccess должна быть включена опция AllowOverride

58. Нейтрон, 12.07.2004 16:53
DiS
Точнее, AllowOverride FileInfo
http://httpd.apache.org/docs/mod/mod_rewrite.html#RewriteEngine

59. DiS, 12.07.2004 20:30
Нейтрон
Все равно не пашет фигня какая-то... Даже на 404 не откликается (ErrorDocument 404 /path/error.html)

60. Нейтрон, 12.07.2004 21:15
DiS
А такая штука есть в httpd.conf?
AccessFileName .htaccess

61. DiS, 12.07.2004 22:09
Ладно, с этой феней я выкрутился. Теперь другая проблема: полное отсутствие на паге скриптов и картинок На www.sitemaker.ru было описано, как с этим бороться, но что-то больно геморройно , да и работает криво.

Вот что у меня получилось:
код:

RewriteEngine on
RewriteRule ^docs/(.*)/(.*)$ /index.php/cat/$1/view/$2

Я что-то слышал про RewriteCond или как-то так... Вроде можно через это.

Вариант через
код:



не рассматривается - я офигею каждый раз перед закачкой на хостинг менять урлу (я раз по пять закачиваю скрипт - дебаггинг однако )

 

Добавление от 12.07.2004 22:10:

Нейтрон
Да, штука была, почему не работало - до сих пор не понял

 

Добавление от 12.07.2004 22:11:

З.Ы. Трюк с вообще не рулит! Он со скриптами нифига не помогает Как не работали, так работать и не стали...

 

62. Нейтрон, 14.07.2004 15:43
DiS
Я что-то слышал про RewriteCond или как-то так... Вроде можно через это.
Если я правильно понял, то это:
RewriteCond %{REQUEST_URI} !^/(.+)\.(gif|jpg)$

63. DiS, 14.07.2004 17:31
Нейтрон
Не сработало...
У меня на сайте все лежит примерно вот так:
JS - в корне, GIF - в папке /images, JPEG,ZIP и еще много всякого в других папках.
txt документы только в content, а потому может написать условие, чтобы обрабатывались только тхт из контента (если это возможно, конечно )?

64. Нейтрон, 14.07.2004 17:50
DiS
Условие нужно по запросу задавать, а не по результату.

Например так:
код:
RewriteEngine on
RewriteRule ^/docs/(.+)/(.+)/$ /?cat=$1&view=$2

При этом желательно, чтобы директории docs не было вообще.

К этой теме 27.09.2004 11:32 moderator-24 подклеил тему "Настройка Apache mod_rewrite под WIN - Ошибка." (автор: Bobbybest)

66. Bobbybest, 26.09.2004 23:15
Господа!

на локальной машине создан файл .htaccess
--------------------
RewriteEngine On
Options +FollowSymlinks
RewriteBase /
RewriteRule ^catalog/(.*)$ /catalog.php

--------------------
При вызове
алиас/catalog/1
выскакивает 500 ошибка.
В логах: Premature end of script headers: c:/php/php.exe

Сам скрипт алиас/catalog.php - работает.

Исходник скрипта:
header ("Last-Modified: ".gmstrftime ("%a, %d %b %Y %T GMT", time()));
Header("HTTP/1.0 200 OK");
Header("Content-type: text/html");
echo("1");
?>

--------------------
Об php в httpd.conf

AddType application/x-httpd-php .php
ScriptAlias /_php/ "C:/PHP/"
Action application/x-httpd-php "/_php/php.exe"
AddType application/x-httpd-php-source .phps
--------------------

В чем может быть косяк? у хостера работает. подозреваю, что что с настройками PHP в httpd.conf

Тема перенесена 27.09.2004 02:35 moderator-mik из форума "Программы: *nix-like системы"

68. Станислас, 27.09.2004 10:21
Как тут было замечено, на виндах симлинки могут не работать..

69. Bobbybest, 27.09.2004 11:42
Станислас
А как сделать, чтобы работало? очень надо

 

Добавление от 27.09.2004 11:43:

В добавление - ОСь - Win2k SP3

К этой теме 09.11.2004 17:50 moderator-24 подклеил тему "Как прикрутить mod_rewrite к Апачу под FreeBSD?" (автор: volk1905)

71. volk1905, 05.11.2004 19:21
Апач давно стоит и работает. Надо прикрутить mod_rewrite.
Как это сделать? Если можно, подробнее.

Спасибо.

72. St. SergioS, 05.11.2004 19:42
если ставил из портов, то, афаик, только раскомментировать соответствующую строку в httpd.conf.


English
Switch to English...
BabelFish.AltaVista.com auto-translate
Скачать Limbo
Ваше мнение?
Что вам мешает использовать Limbo в своих проекта
Безопасность
Недостаток компонентов/модулей
Слабая техподдержка
Плохой форум
Плохие отзывы о Limbo
Недостаток документации


Результаты