Что такое .htaccess (краткий обзор)


Предлагается подробно рассмотреть все возможности использования данного файла, дабы на будущее ни у кого не возникало излишних вопросов.
Рассматривать будем по порядку, детально разбирая каждый вопрос.

1. Требования к файлу:
1.1. .htaccess должен быть записан в формате ОС вашего сервера.
Подробнее..


Вопросы для уточнения:
a) Приведите примеры 16-ричных редакторов, которыми можно произвести описанную выше замену.
b) Какие еще существуют способы перевода файла в UNIX-формат?
c) Приведите универсальную функцию для создания файлов .htaccess в UNIX-формате.

UPD 20.02.08: основную часть вопроса мы разобрали, осталишь лишь незначительные детали.


@темы: Apache

Комментарии
19.02.2008 в 18:44

 
Если файл был написан под Windows, то его требуется открыть в 16-ричном редакторе и запустить замену 0D16 на 2016 (пробел в 16-ричном варианте).
при загрузке по FTP достаточно передать файл в ASCII-режиме.

a) Как спец символы 0D16 0A16 обозначаются в PHP?
0x0D == "\r"
0x0A == "\n"
0x09 == "\t"

b) В какой последовательности эти символы расположены в DOS и в какой в Windows?0A16 0D16 в DOS и 0D16 0A16 в Windows?
"\r\n" - маркер переноса строки и для Win, и для MS-DOS
19.02.2008 в 18:46

 
d) Какие еще существуют способы перевода файла в UNIX-формат?
<?php file_put_contents(strtr(file_get_contents($filename, array("\r\n" => "\n")))); ?> - вполне эффективный метод ))
19.02.2008 в 18:48

 
, конечно же, сорри.
а редактирование комментов глючит

19.02.2008 в 18:58

Крайне злопамятное хамло ;)
La personne mystique Терпеть глюки - наша работа))
19.02.2008 в 19:01

La personne mystique
при загрузке по FTP достаточно передать файл в ASCII-режиме.
А поподробней можно? :)

<?php file_put_contents(strtr(file_get_contents($filename, array("\r\n" => "\n")))); ?> - вполне эффективный метод ))
Ыыыы)) Оригинально)) А еще можно сделать php-файл, который сам создает .htaccess - такой метод используется при установке Гостевух и т.п.

, конечно же, сорри.
а редактирование комментов глючит

Ты про что?
Действительно, глючит))
19.02.2008 в 19:02

 
~Co0L~, нас жестоко наеобманули, что период нестабильности закончился)) раньше хотя бы можно было, задав URL вручную, попасть в редактирование комментов...

* * *

так, еще раз:
<?php file_put_contents($filename, strtr(file_get_contents($filename, array("\r\n" => "\n")))); ?>
19.02.2008 в 19:20

 
А поподробней можно?
ээ... ты правда не знаешь?
я не в состоянии сейчас объяснить человеческим языком, поищи какой-нибудь мануал для любого FTP-клиента. Суть в том, что есть два метода (mode) передачи файлов по FTP - binary и ASCII (текст); в первом случае - файл сохраняется "как есть", а во втором FTP-сервер учитывает ОС клиента и ОС сервера и автоматически переводит переносы строки в те, которые понимаются конечным сервером.
Или пусть кто-ибудь за меня объяснит)

Кстати, у меня под WinVista (Win32) + Apache2.0 прекрасно понимаются .htaccess из Блокнота (т.е. с виндовыми переносами). Не путай читателей, переносы должны совпадать со стандартом ОС сервера, а не быть всегда в UNIX-стиле)

Ыыыы)) Оригинально)) А еще можно сделать php-файл, который сам создает .htaccess - такой метод используется при установке Гостевух и т.п.
я всегда так перевожу переносы строк, прямо через консоль.
19.02.2008 в 19:46

alhames.ru
La personne mystique
я не в состоянии сейчас объяснить человеческим языком, поищи какой-нибудь мануал для любого FTP-клиента.
Да я впринципе понял суть)

Не путай читателей, переносы должны совпадать со стандартом ОС сервера, а не быть всегда в UNIX-стиле)
Ок, учту!)
19.02.2008 в 19:51

Будем же учиться хорошо мыслить - вот основной принцип морали (с) Паскаль
Лично я вообще никогда не заморачиваюсь насчет знаков переноса. Во-первых - ASCII режим в фтп клиенте (кстати говоря, любой нормальный фтп клиент умеет сам определять тип передачи для различных файлов), а во-вторых, в моем php редакторе можно установить под какую ОС записывать файл.
19.02.2008 в 21:25

Клиа.
La personne mystique
file_put_contents только на php5.
19.02.2008 в 23:49

 
barsy,
file_put_contents только на php5.
знаю. В крайнем случае человек залезет в документацию или здесь спросит, что за ф-ия )
признавайтесь, кто еще в числе прочих не обзавелся самостоятельной реализацией file_put_contents/file_get_contents для php4?))
P.S. И меня искренне удивляет, что кто-то еще держится за php4...


FVA,
во-вторых, в моем php редакторе можно установить под какую ОС записывать файл.
о, кстати, я вот php-файлы сохраняю с unix-style переносами, но когда начал, был некий загон из-за переносов в строках внутри кода - никак не понимал, куда деваются байты.

В общем, если писать HTTP-запросы без использования "\r\n", или что-то binary safe, нужно быть аккуратным с переносами )
19.02.2008 в 23:55

Клиа.
La personne mystique я.
У меня хостер еще довольно нескоро перейдет на пхп5. ну.. бесплатно, что поделать.. зато можно лить до 90Гб ^^
19.02.2008 в 23:56

Крайне злопамятное хамло ;)
признавайтесь, кто еще в числе прочих не обзавелся самостоятельной реализацией file_put_contents/file_get_contents для php4?))
Йа не обзавелся)) Меня и php5 устраивает))
20.02.2008 в 00:00

 
У меня хостер еще довольно нескоро перейдет на пхп5. ну.. бесплатно, что поделать.. зато можно лить до 90Гб ^^
о... мда. Я последний проект на php4.4.4 на общих правах делал в июле, а теперь всегда делаю наценку "за работу с устаревшей версией".
и вот как раз чтобы не мучиться каждый раз с адаптацией, у меня в библиотеке, общей для всех проектов, записано следующее %)

<?php

   
if (!function_exists("file_put_contents"))
   {
      function 
file_put_contents($filename$s)
      {
         
$fp fopen($filename"w");
         
fputs($fp$s);
         
fclose($fp);
      }
   }
   
   if (!
function_exists("file_get_contents"))
   {
      function 
file_get_contents($filename)
      {
         return 
join(""file($filename));
      }
   }
   
?>



тупо и без обработки ошибок, каюсь, но большего обычно и не надо.
20.02.2008 в 00:11

Клиа.
file_get_contents разве где-то нету?
20.02.2008 в 00:19

 
file_get_contents разве где-то нету?
в php4.2.1 - нету) у меня есть один сайт под такой версией в поддержке ^^'
если верить документации, она с 4.3.0.
20.02.2008 в 12:53

alhames.ru
FVA
кстати говоря, любой нормальный фтп клиент умеет сам определять тип передачи для различных файлов
Если можно, список "нормальных клиентов" =)

в моем php редакторе можно установить под какую ОС записывать файл.
Ну и название редактора заодно ;-)

La personne mystique
P.S. И меня искренне удивляет, что кто-то еще держится за php4...
Скажи это хостинг-провайдерам)) У меня вот тоже php 4.4... По крайней мере до лета)

никак не понимал, куда деваются байты
Хм.. Я мельком глаза заметил, что при переносе файла на сервак его рамер изменяется -так вот в чем дело!:)

и вот как раз чтобы не мучиться каждый раз с адаптацией, у меня в библиотеке, общей для всех проектов, записано следующее %)
Спс за ф-цию))
20.02.2008 в 13:08

Будем же учиться хорошо мыслить - вот основной принцип морали (с) Паскаль
alhames Списков не веду. =) использую FileZilla и встроеный ftp-клиент редактора (с его помощью можно редактироват файлы прямо на серевере). Редактор - phpDesigner 2008.
20.02.2008 в 13:22

 
Если можно, список "нормальных клиентов" =)
diary.ru/~ruweb/?comments&postid=37490913 - никогда не слышал про FTP Voyager и lftp (это под Линь?), остальные однозначно поддерживают.
правда, настройки по умолчанию для автоопределения типа трансфера у них немного разные, поэтому, "во избежание" вещей типа появления пустых строк в шахматном порядке, лучше пользоваться каким-то одним ^^
20.02.2008 в 13:52

alhames.ru
La personne mystique
никогда не слышал про FTP Voyager и lftp (это под Линь?), остальные однозначно поддерживают.
Я помоему список из Википедии брал.. Так что сам знаком только с CuteFTP и Тоталом =)

Расширенная форма

Редактировать

Подписаться на новые комментарии
Получать уведомления о новых комментариях на E-mail