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

PHP Dev в Windows с WAMP и развертывание в Unix - настройка .htaccess?

Так что я почти уверен, что этот вопрос задавался раньше, но я просто не могу найти ответ в Google - не стесняйтесь указать мне на нужный сайт / сообщение, чтобы найти ответ. Извиняюсь за мой бедный поиск-фу ... :(

Я разрабатываю приложение PHP в Windows с помощью WAMP. Его необходимо развернуть на веб-узле UNIX. В конечном итоге приложение будет жить в собственном домене, например www.example.com, но я разрабатываю его на своем сервере WAMP под localhost / app1, т.е. у меня есть несколько приложений, над которыми я работаю, каждое из которых живет в своем собственном каталоге.

Моя проблема в том, что я имею в виду общие ресурсы по их абсолютным путям, например /images/test.jpg. Они, конечно, отлично работают на моем производственном сервере, но когда я пытаюсь использовать это на моем локальном компьютере, он не может загрузить эти ресурсы, потому что я работаю из «подкаталога» в WAMP, то есть localhost / app1 /, поэтому ссылка на /images/test.jpg не работает. Вместо этого он должен быть сопоставлен с localhost / app1 / images / test.jpg.

Я пробовал поставить

RewriteBase / app1 /

директиву в моем .htaccess в каталоге / xxx / app1, но это просто приводит к ошибке:

Запрос превысил лимит в 10 внутренних перенаправлений из-за возможной ошибки конфигурации. При необходимости используйте LimitInternalRecursion, чтобы увеличить лимит. Используйте 'LogLevel debug', чтобы получить обратную трассировку /

Это, безусловно, имеет смысл, поскольку теперь каждый вызов localhost / app1 / перенаправляет на localhost / app1 / и т. Д.

Итак, мой вопрос: как мне настроить свое приложение, чтобы я мог запускать один и тот же код на локальном хосте с WAMP, а также на моем рабочем хосте? Я понимаю, что, возможно, здесь было не то дерево, и мне следовало бы структурировать его совершенно по-другому, поэтому любые указатели в правильном направлении в этом отношении были бы весьма признательны!

Заранее спасибо!

В конечном итоге приложение будет жить в собственном домене, например www.example.com, но я разрабатываю его на своем сервере WAMP под localhost / app1, т.е.

Вот твоя проблема!

Я разрабатываю в Windows (используя WampDeveloper Pro) либо:

A. Используйте то же самое точное доменное имя и включите локальный DNS для веб-сайта (разрешение файла хоста Windows домена на 127.0.0.1).

Б. Используйте файл config.inc.php для моего веб-сайта, который использует переменную или константу для определения имени домена как dev.example.com, а на производстве как www.example.com. А также определите любые полные пути.

Следовательно, этот вопрос полностью уходит.

Посмотри это ТАК вопрос и читайте дальше RewriteBase чтобы убедиться, что вы это понимаете. Я бы просто использовал обычное правило перезаписи на уровне сервера:

RewriteEngine On
RewriteRule ^/images(.*) /app/images$1  

В mod_rewrite на странице есть более подробная информация и примеры, если это необходимо. Обратной стороной этого подхода является необходимость иметь несколько правил для переписывания всего необходимого, и в этом случае вы можете попробовать что-то вроде:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !/app
RewriteRule ^/(.*) /app/$1  

Если у вас есть проблемы с правилами перезаписи (как я часто это делаю), вы можете временно включить RewriteLog в целях отладки. Еще один потенциально полезный элемент - HTML <BASE> тег, который иногда проще использовать.