Так что я почти уверен, что этот вопрос задавался раньше, но я просто не могу найти ответ в 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>
тег, который иногда проще использовать.