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 ?
В целом, в логах все правильно.
Т.е. при запросе 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 , то файл запускается и все, вроде, нормально. В чем дело, кто знает?
Блин! Я совсем забыл про права на доступ к 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>
и чтобы все сразу работало.
Просто вот так, как я только что написал -- не работает.
Плиз хелп.