Я работаю веб-разработчиком, создавая собственные сайты для клиентов. Мои .htaccess
файлы, как правило, очень просты. Обычно я делаю только 2 вещи:
- Создайте собственный ErrorDocument для 404 ошибок
- Перенаправьте каталог
/upload
на /admin/upload
, чтобы упростить некоторый общий код между publi c сайт и система администрирования
У меня все работает хорошо, кроме одного небольшого раздражения, мне интересно, можно ли что-нибудь сделать. Я использую php и пытаюсь создавать сайты модульно, чтобы не имело значения, размещен ли код по адресу "example.com/" (реальный домен), "localhost / exampleproject2" (на моей машине для разработки) или «mycompanywebsite.com/example.com» (где мы размещаем «бета-версию», которую клиент может просмотреть, когда мы доберемся до этой стадии разработки).
Из PHP сторона дела, у меня нет проблем здесь. Но что касается Apache, мне нужно создать 3 слегка отличающихся .htaccess
файла для каждого из этих доменов:
ErrorDocument 404 /404.php
Redirect 301 /upload /admin/upload
ErrorDocument 404 /exampleproject2/404.php
Redirect 301 /exampleproject2/upload /exampleproject2/admin/upload
ErrorDocument 404 /example.com/404.php
Redirect 301 /example.com/upload /example.com/admin/upload
Очевидно, что это не так уж и сложно, но это немного раздражает. В основном, когда я или кто-то другой передает файлы по FTP и случайно перезаписывает .htaccess
из одной среды, а его аналог - из другой среды, и сайт ломается. Кроме того, это означает, что я не могу включить .htaccess
в свой git репозиторий, не нарушив ничего.
Из моего тестирования, относительные URL не работают вообще. Я думаю, что Apache просто не поддерживает относительные URL в .thaccess
файлах для Redirect
с и ErrorDocument
с. По крайней мере, так оно и есть. При попытке получить сообщение об ошибке на сервере.
Я бы хотел, чтобы у меня был один файл .htaccess
, который я мог бы использовать во всех трех средах и включить в репозиторий git. Если кто-нибудь знает хороший способ сделать это, это было бы замечательно. Решения не должны использовать .htaccess
, я открыт для любого решения, которое делает мой код менее зависимым от абсолютных путей или URL.