По сути, 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
предназначен для замены.