Как иметь разные .htaccess для разных доменов / URL запросов? - PullRequest
0 голосов
/ 01 апреля 2020

Я работаю веб-разработчиком, создавая собственные сайты для клиентов. Мои .htaccess файлы, как правило, очень просты. Обычно я делаю только 2 вещи:

  1. Создайте собственный ErrorDocument для 404 ошибок
  2. Перенаправьте каталог /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.

...