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

apache, htaccess: напишите правило, чтобы xxxxx.txt означал «возвращать исходный код xxxxx.php»

Я не уверен, что это возможно, но я хотел бы написать правило перезаписи (и любую другую инструкцию, если это необходимо) в файле .htaccess, чтобы для каждого URL-адреса в этой папке был перезаписан любой URL-адрес, заканчивающийся на .txt. с тем же именем, заканчивающимся на .php, но, кроме того, в этом случае файл php НЕ выполняется, а вместо него используется его содержимое (исходный код).

То есть, будучи "myfolder" папкой, к которой я хочу применить:

http://www.mydomain.com/myfolder/somescript.php => будет запускать somescript.php как обычно http://www.mydomain.com/myfolder/somescript.txt => вернет исходный код somescript.php без его запуска

Есть два способа сделать это.

  1. Символическая ссылка для каждого .php файл в .txt и добавьте директиву в Apache, например:

    AddType application/x-httpd-php-source .txt
    

    в пределах <VirtualHost>, <Location> или <Directory> блок.

    Помещая это в <Location>, вероятно, лучше всего, чтобы файлы .txt не были глобально связаны как источник PHP.

  2. Используйте правило перезаписи, например:

    RewriteRule ^(/myfolder/.+)\.txt $1.php [H=application/x-httpd-php-source]
    

    (источник: http://httpd.apache.org/docs/2.2/rewrite/flags.html#flag_h - немного изменены)

    С помощью этого параметра убедитесь, что в каталоге с именем .txt в противном случае они будут отправлены с Content-type x-httpd-php-source. В этом случае вам может потребоваться настроить регулярное выражение.