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, а также на моем рабочем хосте? Я понимаю, что, возможно, я ошибался в этом дереве и должен был структурировать это совершенно по-другому, поэтому любые указатели в правильном направлении в этом отношении были бы наиболее ценными!
Заранее спасибо!
2 ответа
Посмотрите этот ТАК вопрос и прочтите RewriteBase, чтобы убедиться, что вы его понимаете. Я бы просто использовал обычные правила перезаписи на уровне сервера:
RewriteEngine On
RewriteRule ^/images(.*) /app/images$1
Страница mod_rewrite содержит больше деталей и примеров, если это необходимо. Недостатком этого подхода является наличие нескольких правил, чтобы переписать все необходимое, в этом случае вы можете попробовать что-то вроде:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !/app
RewriteRule ^/(.*) /app/$1
Если у вас есть проблемы с правилами переписывания (как я часто это делаю), вы можете временно включить RewriteLog
в целях отладки. Другим потенциально полезным элементом является HTML <BASE>
тег, который иногда проще в использовании.
Приложение в конечном итоге будет жить в своем собственном домене, например, www.example.com, но я разрабатываю его на своем сервере WAMP в localhost/app1, т.е.
Есть твоя проблема!
Я разрабатываю в Windows (используя WampDeveloper Pro) так:
О. Используйте то же самое точное имя домена и включите Локальный DNS для веб-сайта (разрешение файла хоста Windows для домена 127.0.0.1).
Б. Используйте файл config.inc.php для моего веб-сайта, который использует переменную или константу, чтобы определить имя домена как dev.example.com, а на производстве - www.example.com. А также определить любые полные пути.
Следовательно, эта проблема полностью уходит.