PHP: Как кодировать .htaccess, чтобы он работал как на локальном хосте, так и в Интернете без редактирования - PullRequest
3 голосов
/ 25 июля 2010

У меня есть файл .htaccess, и в настоящее время я работаю на localhost.Для ошибки 404 страницы у меня есть следующий код в файле .htaccess:

ErrorDocument 404 /my_local_domain/404.php

Но когда я загружаю этот файл на свой веб-сайт в Интернете, функциональность файла нарушается.Он больше не показывает страницу 404.php.Это работает, если я изменяю код в файле .htaccess моего веб-сайта следующим образом:

ErrorDocument 404 /404.php

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

1.Как решить вышеуказанную проблему без необходимости каждый раз редактировать файл .htaccess (удаляя его из my_local_domain), внося изменения и загружая его онлайн?

2.Как настроить перенаправление страниц 404 для всех вложенных папок? (Я не хочу настраивать файл .htaccess для каждой из папок. Один файл .htaccess, который находится в корневой папке веб-сайта и элементов управленияперенаправление всех подпапок было бы потрясающим)

Вся помощь приветствуется.

Спасибо.

Ответы [ 2 ]

2 голосов
/ 25 июля 2010

Я полагаю, что у вас есть две разные проблемы.

Прежде всего, вам не нужно иметь разные пути в разработке и живом сайте.Похоже, что вы настроили свой локальный Apache для размещения только одного сайта, и каждый реальный сайт находится в подкаталоге.Это не очень хорошая идея: вы скоро будете смешивать файлы cookie и сессии между всеми вашими сайтами разработчиков.Взгляните на функцию на основе имен виртуальных хостов : вы можете настроить столько независимых сайтов, сколько вам нужно.Вам даже не нужно покупать реальные домены, которые вы установили в файле hosts .

Во-вторых, при определенных обстоятельствах может быть полезно иметь разные директивы Apache.Я использовал следующий прием.

  1. Выберите ключевое слово для сервера dev, например, DEV_BOX.
  2. Передайте это ключевое слово Apache в параметре -D.Если вы запускаете его как службу, вы можете запустить regedit и найти ключ HKLM\SYSTEM\CurrentControlSet\Services\Apache2.2\Parameters.Добавьте -D DEV_BOX к значению ConfigArgs.Перезапустите Apache.
  3. Теперь вы можете использовать директиву <IfDefine> для установки локальных директив:

-

#
# Common stuff
#
AddDefaultCharset UTF-8


#
# Local-only stuff
#
<IfDefine DEV_BOX>
    Options +Indexes
</IfDefine>


#
# Live-only stuff
#
<IfDefine !DEV_BOX>
    Options -Indexes
</IfDefine>
1 голос
/ 25 июля 2010

Прежде всего я предлагаю вам настроить локальные домены для разработки. Например, если вы разрабатываете веб-сайт под www.example.com, вы можете установить local.example.com в вашем файле HOSTS . Вы сделаете VirtualHost настройку в вашем Apache, и .htaccess будет таким же.

Кроме того, вы можете настроить процесс сборки (например, через Ant ), который позволит вам подготовить и сгенерировать zip-файл с файлами, которые отправляются на рабочий сервер. Эта сборка будет содержать правильные файлы конфигурации (конфиги БД, почтовые серверы, htaccess и т. Д.).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...