#apache #.htaccess #file-extension
#apache #.htaccess #расширение файла
Вопрос:
мне нужно изменить некоторые файлы htm на моем веб-сервере на файлы .php. Эти страницы связаны из разных мест. я не хочу, чтобы они показывали ошибку file not found, когда кто-то пытается получить к ним доступ.
Например, если index.htm необходимо изменить на index.php могу ли я написать перенаправление
redirect 301 /index.html index.php
в моем файле htaccess? Это наилучший подход?
Спасибо
Пради
Ответ №1:
Вы могли бы использовать mod_rewrite. Что-то вроде этого может сработать:
RewriteEngine on
RewriteRule index.php index.html
Вы можете использовать регулярные выражения. Смотрите:
http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html
Ответ №2:
перенаправление 301 /index.html index.php
Это не сработает, если вы отправляете данные через POST. Все остальное, кроме переименования файлов и перезаписи ссылок, является уродливым и временным взломом. Черт возьми, вы можете избежать этого, поместив каждую «страницу» в свой собственный каталог и сославшись на каталог в URL-адресе и указав файл по умолчанию через конфигурацию DirectoryIndex.
Вы не упомянули, на какой ОС это запущено — если это Linux / Unix / BSD, то вы могли бы просто использовать sed для изменения всех абсолютных ссылок (и grep для поиска относительных, которые вам, вероятно, потребуется отредактировать вручную).
Что-то вроде….
find /path/to/root/of/docs -type f -exec sed -ibkup 's//index.html//index.php/g' {} ;
find /path/to/root/of/docs -type f -exec grep -l 'index.html' {} ;