Локальный php-сайт не запускается на XAMPP. Возможная проблема с перезаписью?

#php #apache #mod-rewrite #xampp

#php #apache #mod-перезапись #xampp

Вопрос:

Я использую Win 7. Я скачал XAMPP 1.7.1. Мне пришлось изменить http:// localhost/ на http://localhost:8080 / поскольку порт 80 уже был занят. В httpd.conf я изменил AllowOverride на All.

Я запускаю локальный веб-сайт (php 4.2 и MySQL). Корневой каталог веб-сайта (расположенный в E:xampphtdocstest ) содержит файл htaccess.

Я проверил информацию о php, чтобы увидеть, что mod_rewrite загружен. Файл htaccess также работает корректно и перехватывается (я попытался ввести бессмысленный текст в файл htaccess и после этого получил ошибку сервера, которая подтверждает, что htaccess в порядке).

Домашняя страница веб-сайта загружается нормально, но, похоже, она не распознает файлы css или javascript. Текст домашней страницы и изображения, имеющие прямой URL, отображаются, но какой-либо css-стиль не применяется. Кроме того, любые ссылки на другие страницы просто приводят меня на http:// localhost/xampp /.

Я проверил журналы ошибок, и они показывают эту ошибку (там много строк, подобных этой):

 [Sun May 01 22:26:57 2011] [error] [client 127.0.0.1] File does not exist: E:/xampp/htdocs/scripts, referer: http://localhost:8080/test/.
  

Файл htaccess выглядит следующим образом (этот файл отлично работает на сервере удаления):

 RewriteEngine On

RewriteBase /

<FilesMatch ".(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
Header set Expires "Thu, 15 Apr 2015 20:00:00 GMT"
Header set Cache-Control "max-age=172800, public, must-revalidate"
</FilesMatch>

Header unset ETag
FileETag None

<IfModule mod_deflate.c>
SetOutputFilter DEFLATE
SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png|rar|zip|pdf)$ no-gzip dont-vary
<IfModule mod_headers.c>
Header append Vary User-Agent
</IfModule>
</IfModule>

<IfModule mod_expires.c>

# enable expirations
ExpiresActive On
ExpiresByType image/gif "access plus 7 days"
ExpiresByType image/jpeg "access plus 7 days"
ExpiresByType text/css "access plus 7 days"
ExpiresByType application/x-shockwave-flash "access plus 7 days"
ExpiresByType application/javascript "access plus 7 days"
ExpiresByType text/javascript "access plus 7 days"
ExpiresByType image/png "access plus 7 days"
<FilesMatch ".(ico|gif|jpg|jpeg|png|flv|pdf)$">
Header append Cache-Control "public"
</FilesMatch>
<FilesMatch ".(js|css|swf)$">
ExpiresDefault "access plus 7 days"
Header append Cache-Control "public"
</FilesMatch>
</IfModule>

AddEncoding gzip .gz
RewriteCond %{HTTP:Accept-encoding} gzip
RewriteCond %{HTTP_USER_AGENT} !Safari
RewriteCond %{REQUEST_FILENAME}.gz -f
RewriteRule ^(.*)$ $1.gz [QSA,L]

#RewriteRule favicon.ico images/favicon.ico [NC,L]
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
#php_flag magic_quotes_gpc Off
  

Есть идеи, почему это происходит?

Спасибо, Василий

Обновление: Я еще немного поиграл с xampp и, наконец, решил удалить программное обеспечение, которое блокировало порт 80 (службы sql reporting services). Затем я изменил ссылку с localhost: 8080 на localhost: 80 в файле конфигурации apache.

К сожалению, это не устранило проблему.

Например, сгенерированная домашняя страница будет отображать в заголовке следующее:

 <link href="http://localhost/test/styles/style.css" rel="STYLESHEET" type="text/css" />
<script type="text/javascript" src="http://localhost/test/scripts/jquery.json-2.2.min.js"></script>
  

Ссылки указывают именно на то место на моем жестком диске, где styles.css и jquery.js находятся.

В то же время ссылка на изображение работает, потому что изображение отображается:

 <div class="logo"><img src="http://localhost/test/images/logo.png" width="356" height="77" /></div>
  

В файле конфигурации для веб-сайта перечислены следующие значения, которые применимы к этой проблеме:

 <siteHost>http://localhost/test/</siteHost>
<database>mysql://root:@localhost/prod</database>
  

Не уверен, что попробовать дальше. Есть идеи?

Спасибо, нерешительный

Ответ №1:

Вы могли бы попробовать добавить базовый URL в заголовок каждой страницы:

 <head>
<base href="http://localhost:8080/" />
</head>
  

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

Комментарии:

1. Спасибо. Я вернулся к localhost: 80, но это не устранило проблему.

Ответ №2:

Убедитесь, что ваши пути содержат начальную косую черту.

<link href="css/style.css" />

не эквивалентно

<link href="/css/style.css" />

или

<link href="./css/style.css" />

Проверьте, помогает ли это.

Комментарии:

1. Я обновил свой вопрос выше после того, как я вернулся к localhost: 80. Ссылка на файл css кажется правильной.

Ответ №3:

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

Василий, проверьте, есть ли у вас какой-либо файл htaccess в каталоге вашего сайта, некоторое время назад у меня была такая же проблема с изображениями и css-файлами, и это была перезапись модом файла htaccess.