Назад | Перейти на главную страницу

Использование mod_rewrite для перезаписи index.html в папку cgi-bin

По сути, php может выполняться только в папке cgi-bin моего хоста.

В моем веб-пространстве путь к файлу index.html выглядит следующим образом:

www.example.edu/~username/index.html

Когда пользователь это набирает, я бы хотел, чтобы mod_rewrite:

www.example.edu/~username/cgi-bin/index.php

Какой для этого нужен код mod_rewrite? Я перепробовал кучу вещей, и это не сработало. Я думаю, это также может иметь отношение к index.html, ДЕЙСТВИТЕЛЬНО имеющему следующий путь (это то, что я должен использовать с помощью команд unix):

www.example.edu/~username/WWW/index.html

Однако www.example.edu/~username/index.html переводит меня в index.html в папке WWW.

Вот мой файл .htaccess:

LoadModule rewrite_module modules/mod_rewrite.so
AddModule mod_rewrite.c

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^/index.html$ /cgi-bin/index.php [L]
</IfModule>

Вы хотите перенаправить или переписать URL? При перенаправлении адрес строки URL-адреса браузера изменится. Вы можете сделать это с помощью:

Redirect /index.html http://www.example.edu/~username/cgi-bin/index.php

Если вы хотите его переписать, чтобы пользователь не видел URL-адрес PHP, например:

RewriteEngine On
RewriteRule ^/index.html$ /cgi-bin/index.php [L]

Строка запроса (например, ?foo=bar) будет передан в сценарий PHP. [L] означает «последний» - не обрабатывать следующие правила.

РЕДАКТИРОВАТЬ:

Вы определенно можете использовать mod_rewrite? Попробуйте удалить свой <IfModule> и посмотрите, получите ли вы сообщение об ошибке (вы увидите 500, если модуль не загружается или не загружается).

И попробуйте:

RewriteRule ^/index.html$ /cgi-bin/index.php [L,R=302]

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