LINUX.ORG.RU
ФорумAdmin

Apache --> mod_rewrite --> пара вопросов


0

0

Apache 1.3.26
mod_rewrite, mod_alias, и еще куча всяких модулей.

1) Дайте линк на сайт, где много спецов по настройке Apache (не настройке Russian apache, а просто по настройке Apache).
2) Есть сайт site.server.dom,
хочется, чтобы
  site.server.dom/?someparam никак не изменялся,
и чтобы на запрос
  site.server.dom/AAA/BBB
пользователю показывался
  site.server.dom/?par=/AAA/BBB

При этом очень хочется, чтобы пользователь не знал о подмене (т.е., чтобы адрес оставался тот же)
Как я пишу:
 RewriteEngine On
 RewriteRule ^/[^?](.*) /\?f=\/$1 [NE,R]

Но опция R редиректит файл.
Пользователь видит, какой файл на самом деле открылся.
А нужно, чтобы пользователь этого НЕ ВИДЕЛ.
Т.е. чтобы, если пользователь открывает
site.server.dom/AAA/BBB, то ему сразу выдалась страничка,
и адресная строка в его браузере осталась той же.

3) Если я пишу:
 RewriteEngine On
 RewriteRule ^/1/(.*) /\?f=\/$1 [NE,R]
то при наборе site.server.dom/1/other/
брайзер редиректит на /?f=/other/
Куда пропадает /1/ ?
Если я пишу
 RewriteRule ^/(.*) /\?f=\/$1 [NE,R]
То при открытии site.server.dom/other/
сайт открывает site.server.dom/?f=/
А КУДА ДЕВАЕТСЯ other ?

===========ДОПОЛНЕНИЕ===========

Написал так:

RewriteCond /path/to/document/root%{REQUEST_FILENAME} -f
RewriteRule ^(.+)$ /path/to/cgi-dir/script\?f=$1 [L]

В целом, в логах все правильно.
Т.е. при запросе site.server.dom/file
в логах пишется, что файл подменен на /path/to/cgi-dir/script\?f=file, _НО_ скрипт не запускается (пишет, что
YOU don't have permission to access to /file.
Хотя, если отключить Rewrite, и вручную написать
site.server.dom/cgi-bin/script , то файл запускается и все, вроде, нормально. В чем дело, кто знает?

Utandr ()
Ответ на: ===========ДОПОЛНЕНИЕ=========== от Utandr

===========ОТВЕТ самому себе :)===========

Блин! Я совсем забыл про права на доступ к cgi-bin

Короче, проблема решилась следующим образом:
сначала я проверил, редиректился ли site.server.dom/file
на /docroot/some.shtml, в котором был включен #include <script-file>

Все заработало.
Тогда я подумал: проблема с доступом ко всем cgi-bin (млин!)
И точно:

<Directory "/path/to/cgi-bin">
   AllowOverride None
   Options ExecCGI
   Order allow, deny
   Allow from all
</Directory>

НО ТЕПЕРЬ ДРУГОЙ ВОПРОС МЕНЯ СТАЛ ВОЛНОВАТЬ:

 Вот есть у меня ScriptAlais /cgi-bin/ "/path/to/cgi-bin"
Нельзя ли на все такие ScriptAlias /cgi-bin/ указать параметры, перечисленные выше (где директива <Directory>) , не прописывая каждый раз папку?
Т.е. чтобы прописать что-то вроде 
<Directory /cgi-bin/>
   AllowOverride None
   Options ExecCGI
   Order allow, deny
   Allow from all
</Directory>
и чтобы все сразу работало.
Просто вот так, как я только что написал -- не работает.
Плиз хелп.

Utandr ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.