2016-07-03 2 views
1

Я использую php -S localhost:8000 в качестве моего сервера разработки. В конце я буду использовать nginx. Но у меня проблема с сервером php.Относительный путь в html с php-сервером

root 
| 
|---/app 
    | 
    |---/index.html 
    |---/scripts 
    | | 
    | |---/main.css 
    | 
    |---/styles 
     | 
     |---/main.js 

В моей app/index.html у меня есть:

<!DOCTYPE html> 
<html> 
<head> 
    <link rel="stylesheet" href="styles/main.css" type="text/css" /> 
</head> 
<body> 

    <script src="scripts/main.js"></script> 
</body> 
</html> 

Когда я открываю страницу в браузере с localhost:8000/app в CSS и Javascript не может быть найти. Браузер ищет localhost:8000/styles соответственно. localhost:8000/scripts вместо localhost:8000/app/styles соответственно. localhost:8000/app/scripts. Когда я напрямую открываю файл с сервером или с nginx, файлы находятся правильно. Так что php-сервер что-то меняет. Что тут происходит?

Я попробовал его в Chrome и Firefox. Такое же поведение в обоих браузерах. Когда я открываю сайт с localhost/app (nginx), все работает так, как ожидалось. Когда я открываю сайт с localhost:8000/app (php -S localhost:8000), скрипты и стили не могут быть найдены. Это те же файлы с одним и тем же корнем файлов. Откуда приходит другое поведение?

+0

Итак, что вы используете? Вы говорите, что он отлично работает без сервера и с nginx. Но он не работает с «PHP-сервером». PHP не является сервером? – icecub

+0

Я использую php для разработки. Это быстро, но это не работает должным образом. Я хочу знать, что мне нужно настроить. php -S - небольшой сервер для разработки. –

+0

Звучит скорее как странное поведение, которое показывает браузер ... – arkascha

ответ

2

После проверки OFFICAL документов на PHP: Built-in web server ясно говорится:

URI запросы обслуживаются из текущего рабочего каталога, где PHP был запущен, если опция -t не используется, чтобы указать явный корень документа ,

+0

$ path содержит путь к файлу файловой системы, а не URL-адрес сервера. Это не работает. Кроме того, index.html не следует анализировать. Это внешний файл html без php –

+0

@ThomasSablik Than, пожалуйста, не говорите о 'index.PHP' в свой вопрос в первую очередь:' В моем приложении/index.php у меня есть: '. Если вы хотите получить URL-адрес сервера, все, что вам нужно сделать, это: '$ server_url =" http: // $ _ SERVER [HTTP_HOST] $ _SERVER [REQUEST_URI] ";' – icecub

+0

Мне нужна относительная ссылка с использованием php-webserver. Это не работает. Я не хочу использовать php-код. 'php -S localhost: 8000' создает небольшой сервер разработки. Но поведение этого сервера неверно. Я хочу знать, как это настроить. './File' или' file' является относительной ссылкой на файл. Но с php-сокером он изменился на абсолютную ссылку. Я не хочу этого. –

Смежные вопросы