Я только начинаю изучать веб-разработку, но немного запутался при настройке локальной среды разработки.
У меня был php-сайт на виртуальном хостинге в течение некоторого времени. Я редактировал локальные файлы и загружал их, а затем обновлял, чтобы убедиться, что все работает. Непослушный обычай, который я знаю!
Поэтому я попытался настроить локальную среду разработки и установить AMPPS для локального веб-сервера (PHP5). Я амбициозно настроил структуру папок ниже, чтобы я мог кодировать ряд веб-сайтов, чтобы опробовать разные языки и фреймворки, сохраняя их все отдельно. (Квадратные скобки обозначают папки). Убедитесь, что это правильный подход... (?)
-->[PHP]
---> [AMPPS]
----> [www]
-----> [PROJECTS]
------> [project_name]
-------> index.php
-------> .htaccess
-------> [images]
-------> [section1]
--------> page1.php
-------> [etc...]
------> [project_name]
------> [project_name]
--> [RUBY]
--> [PYTHON]
Мое первое препятствие, однако, заключается в том, что все мои ссылки были относительными, и я, конечно же, загрузил свой сайт в корень с помощью моего хоста. Корень в моей локальной среде разработки теперь www
, что, как вы можете видеть, находится на несколько папок выше того места, где я установил свой сайт.
Ссылки (например, <a href="/section1/page1.php">Page 1</a>
) теперь отображаются как: "localhost/section1/page1.php"
, когда я считаю, что на самом деле они должны отображаться как "localhost/PROJECTS/project_name/section1/page1.php"
.
Я не думаю, что говорить APACHE, что мой корневой каталог — [имя_проекта], — правильный подход, потому что тогда он не будет работать для других проектов, которые я создаю. Я предполагаю, что я должен делать что-то для каждого проекта, чтобы указать свой собственный корневой каталог.
Я думал, что смогу указать корень, добавив файл .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, посетив имя проекта.dev/ (без последнего / он пытается выполнить поиск).
Сначала я подумал, что неправильно настроил VirtualHost или хосты, хотя на самом деле именно это поведение Chrome затуманивало проблему. На момент написания этой статьи другие браузеры, такие как Firefox, не разделяли эту озабоченность. Надеюсь, это поможет кому-то другому.
/etc/hosts
и<VirtualHostName>
) - person mario   schedule 10.12.2011