2016-12-19 3 views
0

Я использую linux-сервер с CentOS 7, Apache 2.4.23 с установленным мод jk. mod jk установлен и настроен правильно, что открывает сайт, но не загружает css этого сайта.Apache mod_jk not loading CSS

Я также пробовал различные правила перезаписи, но проблема остается такой же.

ниже конфигурации, которые я использовал в моей httpd.conf для mod_jk

RewriteRule ^/(. *) $/Тест/$ 1 [PT]

JkMount/* тест

worker.properties:

worker.list=test 

worker.test.type=ajp13 
worker.test.host=localhost 
worker.test.port=8009 

все mod_jk конфигурации в час ttpd.conf и CSS находится в Tomcat

В контекстном файле Tomcat никаких изменений не внесено.

server.xml

shutdown port = 8005 
http port = 8080 
ajp port = 8009 

Благодаря

+1

Вам следует предоставить дополнительную информацию, особенно контекст Приложение Tomcat, где находится css (он обслуживается непосредственно apache или его Также должно быть перенаправление на Tomcat?) также предоставляют файл workers.properties и всю конфигурацию mod_jk в httpd.conf или производный – jlumietu

+0

workers.properties файл worker.list = тест worker.test.type = ajp13 работника .test.host = localhost worker.test.port = 8009 все конфигурации mod_jk находятся в httpd.conf и CSS находится в Tomcat –

+0

Сложно указать, что происходит только с этими данными. Пожалуйста, предоставьте информацию о контексте приложения tomcat (это похоже на '/ test /'), а URL-адрес (прямой tomcat и через apache и mod_jk) одного из файлов css, который сбой – jlumietu

ответ

0

Добавить все ваши HTML, изображения и CSS папки сервера Apache и ваши классы Java в TOMCAT/WebApps/проекта/WEB-INF/классы и все будет начать работать нормально

+0

, который работает, но возможно ли сделать это прямо из tomcat? –

+0

@ DushyantGohil Да, это возможно и должно работать, не делая ничего большего, чем вы делали раньше. Но сложно сказать что-то еще, если вы не предоставите нам свою структуру проекта и точные css-url, которые не работают – jlumietu

+0

Я разместил детали –

0

Это структура проекта

enter image description here

ссылка отн = "таблица стилей" HREF = "$ {} pageContext.request.contextPath /resources/css/style.css" Тип = "текст/CSS"

0

Вы не можете получить доступ к CSS, так как ссылка неверна.

Согласно вашей структуре проекта, ваш css находится в: project_root/webapp/resources/style.css, а ссылка для его доступа должна быть http://[host:port]/resources/style.css.

Вместо этого, вы набираете свой CSS URL как:

"$ {pageContext.request.contextPath}/ресурсы/Css /style.css"

, где его должно быть:

"$ {} pageContext.request.contextPath /resources/style.css"

Если вы измените этот параметр в своей ссылке css, я ставлю, что он будет возвращен, как и ожидалось.

Другое дело - удобство или не обслуживание css, js и других статических материалов прямо из Apache Httpd (или любого другого веб-сервера), а не из Tomcat. На нем есть разные оппоненты, особенно если вы предоставляете Apache APR-библиотеки Tomcat. Я лично предпочитаю это.В этом случае, после того, как вы скопировали/переместили/перенаправили через псевдоним ваши статические элементы в Apache, ваша стратегия JKMount должна быть более сложной. Это может быть один подход:

JkMount /test/* test 
JkUnMount /test/resources/* test 

EDIT:

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

На самом деле RewriteRule ^/(.*)$ /test/$1 [PT] переписывает каждый запрос этому хосту (или виртуальному хосту), добавляя дополнительный путь /test/ к началу пути запроса.

Он работает нормально для первого запроса, так что он принимает запрос http://server.com/ и переписывает его на http://server.com/test/. После этого JKMount перенаправляет запрос на tomcat, поскольку он перенаправляет каждый mach на рабочий стол, и когда вы применяете универсальное выражение (/ *), каждый запрос перенаправляется на tomcat.

Таким образом, первый запрос делает так:

http://server.com/ > http://server.com/test/

Но любой последующий ресурс или ссылка (включая CSS ресурсов) внутри вас Tomcat приложение будет на самом деле имеют /test/ контекст правильно выставиться (по крайней мере, CSS вы пытаетесь загрузить). Таким образом, ссылка css /test/resources/css/style.css также переписывается, и она заканчивается следующим образом: /test/test/resources/css/style.css, который является неправильным адресом.

Теперь, чтобы избежать этого, мое предложение изменить RewriteRule, чтобы управлять только вызов корневого элемента, таким образом:

RewriteRule ^/$ /test/ [PT] 

Если вы делаете это, как это, только первоначальный запрос http://server.com/ будет переписываться в http://server.com/test, и любое последующее действие ресурса, ссылки или формы, так как все ваше приложение управляется весной mvc, уже будет иметь сопоставление путей контекста в uri.

+0

сделал изменения, как вы предлагали, но все же не работает –

+0

Я действительно не думаю, что это проблема apache или mod_jk. Я уверен, что даже прямо на Tomcat (для URL http: // localhost: 8080/test /) файлы css не загружаются – jlumietu

+0

с использованием localhost: 8080/тестовые файлы css загружаются отлично –