Как установить корневую директорию в подпапку (локальная среда разработки php) - PullRequest
0 голосов
/ 10 декабря 2011

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

У меня был сайт php на общем хостинге в течение некоторого времени. Я бы отредактировал локальные файлы и загрузил их, а затем обновил, чтобы убедиться, что все работает. Непослушная практика, которую я знаю!

Итак, я попытался настроить локальную среду разработки и установил AMPPS для локального веб-сервера (PHP5). Я амбициозно настроил структуру папок ниже, чтобы я мог кодировать целый ряд веб-сайтов, чтобы опробовать различные языки и структуры, сохраняя их все отдельно. (квадратные скобки обозначают папки) . Обратите внимание, если это правильный подход ... (?)

-->[PHP]
---> [AMPPS]
----> [www]
-----> [PROJECTS]

------> [project_name]
-------> index.php
-------> .htaccess
-------> [images]
-------> [section1]
--------> page1.php
-------> [etc...]

------> [project_name]
------> [project_name]
--> [RUBY]
--> [PYTHON]

Мое первое препятствие, однако, заключается в том, что все мои ссылки были относительными, и я, конечно, загрузил свой сайт в root с моего хоста. Root в моем локальном окружении теперь www, что, как вы можете видеть, находится в нескольких папках от того места, где я установил свой сайт.

Ссылки (например, <a href="/section1/page1.php">Page 1</a>) теперь отображаются как: "localhost/section1/page1.php", когда я считаю, что на самом деле они должны отображаться как "localhost/PROJECTS/project_name/section1/page1.php".

Я не думаю, что указание APACHE, что моим корневым каталогом является [имя_проекта], является правильным подходом, потому что тогда он не будет работать для других проектов, которые я создаю. Я предполагаю, что мне нужно что-то делать для каждого отдельного проекта, чтобы указать собственный корневой каталог.

Я подумал, что могу указать root, добавив файл .htaccess в папку project_name:

Из моих онлайн-исследований я подумал, что это будет что-то вроде:

RewriteEngine on
RewriteRule ^/$ /PROJECTS/project_name/

или, возможно

RewriteEngine on
RewriteRule ^/$ .;C/PHP/AMPSS/www/PROJECTS/project_name/

Однако я не могу заставить их работать.

Когда сайт был в сети, я также кодировал <?php set_include_path($_SERVER['DOCUMENT_ROOT']); //Look for includes starting from ROOT location ?> вверху каждой страницы, думая, что поступаю правильно. Теперь я не уверен, что правильно понял, что я там делал. Похоже, что это не влияет на мою среду разработки или без нее. И я так и не смог отредактировать его, чтобы решить проблему с относительными ссылками.

Извините за длинный пост.

Я благодарен за любые отзывы и помощь. Заранее спасибо:)

[Решено] - Советы ниже были идеальными. Спасибо вам всем. :)

Подсказка для пользователей Chrome: Если вы используете собственный домен, как я сделал с .dev, либо добавьте адрес http://, либо завершите его завершающим /. Например, теперь я захожу на свой сайт разработчиков в Chrome, посещая projectname.dev/ (без последнего / пытается выполнить поиск).

Сначала я подумал, что неправильно настроил VirtualHost или хосты, хотя на самом деле именно это поведение Chrome скрывало проблему. На момент написания этой статьи другие браузеры, такие как Firefox, не разделяли эту озабоченность. Надеюсь, что это поможет кому-то еще.

Ответы [ 2 ]

3 голосов
/ 10 декабря 2011

Вы правы, что настройка Apache для каждого проекта - это путь вперед.Лучше всего делать с виртуальными хостами .Определите виртуальный хост для каждого проекта и присвойте ему доменное имя или поддомен для разработки.В моем случае я использую test.com для всей локальной разработки и настраиваю project1.test.com, project2.test.com и т. Д., Чтобы все мои относительные пути работали, как ожидалось.Для этого я также редактирую свой hosts файл , чтобы поиск DNS для test.com и суб-проектов разрешался на моей локальной машине.

Перезапись URL-адресов - это то, что я резервирую для проекта-проектная основа, без настройки глобальных переписываний для конкретной настройки сервера.Таким образом, моя локальная среда разработки будет близка к реальной серверной среде, и переписывания для конкретных проектов будут работать, как и ожидалось.

Надеюсь, что это поможет

0 голосов
/ 10 декабря 2011

Я рекомендую использовать метод, упомянутый @Tak, но я знаю, что могут быть проблемы с предварительно сконфигурированными пакетами WAMP для добавления виртуальных хостов, поэтому есть также решение использовать тег BASE в разделе заголовка Ваш HTML:

<base href="http://localhost/PROJECTS/project_name/">
...