ГОТОВИ ЛИ СА ВАШИТЕ СВЕЩИ?

Имаме сървър, който е конфигуриран да обслужва няколко сайта.

Един от тези сайтове е сайт на WordPress, а някои от страниците му наистина са уеб приложения на Java, хоствани от Tomcat. Уеб приложенията на Java отправят заявка до localhost, за да получат горните и долните колонтитули, така че когато страниците им се заредят, всичко съвпада с частите на WordPress на сайта.

Напоследък това причинява някои интересни предизвикателства при конфигурирането, тъй като наскоро също се опитахме да внедрим сайтове по подразбиране за улавяне на трафик, за който apache няма друга конфигурация.

Това, което се случва сега, е, че когато Java приложенията поискат header.php от localhost, сайтът по подразбиране (чието ServerName е localhost) не връща нищо, тъй като няма такъв файл в директорията, където съдържанието на сайта по подразбиране.

Опитах се да поправя това с пренасочване, така че приложението Java да бъде пренасочено към правилния URL за заглавката по следния начин:

 RewriteEngine on RewriteRule '.*header\.php' 'http://site1.mycompany.com/common-files/header.php' RewriteRule '.*footer\.php' 'http://site1.mycompany.com/common-files/footer.php' 

Това леко поправи нещата: Сега, когато се опитвам да заредя страница, базирана на Java, не получавам грешка, но получавам:

Намерен. Страницата е преместена тук

(където "тук" е връзка към header.php)

Това все още е проблем, тъй като ми трябва съдържанието на header.php, а не връзка към header.php.

Има ли някакъв начин да направите това по-безпроблемно, така че приложенията на Java дори да не знаят, че са пренасочили?

В идеалния случай бих модифицирал приложенията на Java, за да се справя с това малко по-добре, но това е извън обхвата (не моите приложения, нито моята власт да ги променя).

  • Конфигурирам сайта си по подразбиране да обслужва 404 Not Found. Ако някой удари моя уеб сървър с неизвестно име на хост, трябва да получи грешка.
  • @StephenOstermiller: Имаме няколко сайта и беше решено да покажем персонализирана страница със списък на валидни сайтове, хоствани от този сървър.
  • Тогава може би не използвайте същата рамка само за тази страница. Просто конфигурирайте една статична страница за тази цел. Можете дори да конфигурирате като страница 404.
  • @StephenOstermiller: Мисля, че може да съм те объркал, извинявай. Сайтът и страницата по подразбиране се зареждат добре, точно както се предполага. Проблемът е, че сега защото има сайт по подразбиране, конфигуриран за ServerName "localhost", приложенията на Java не могат да получат своите колонтитули (те не са част от сайта по подразбиране). Нещата работиха добре преди добавен е сайтът по подразбиране.

Горният и долният колонтитул на WordPress не са непременно предназначени за директен достъп. Дори и това да работи, няма да е изгодно за клиента да се наложи да им се обажда сам. Освен това изглежда малко небрежно да изграждате части от вашия сайт на отделни сървъри.

Бих препоръчал да се опитате да намерите друго решение. Ако трябва да изтеглите съдържание от вашия сайт на Java през интернет, една от опциите може да бъде вашият сайт на WordPress да обслужва предимно празна страница, може би с малък коментар вместо тялото, а след това можете да изтеглите това директно с Java и заменете този коментар с новото си тяло, преди да го поднесете.

Споменавате обаче, че името на сървъра за ресурса е "localhost". Това има две важни последици. Първо, че хостът може да не обработва повиквания към „localhost“ по начина, по който очаквате заради записите на VirtualHost, така че вижте дали това е проблем. По-важният фактор обаче е, че сте на един сървър със скрипта.

Вместо да се обаждате през интернет, което отнема време и има допълнителни разходи, можете да съберете данните директно от PHP скрипта. Например, можете да направите системно обаждане до php давайки пълния път към скрипта. Може да се наложи да зададете някои променливи на околната среда, като HTTP_HOST и REQUEST_URI, но каквото и да правите директно през PHP, ще бъде по-чисто и по-бързо, отколкото да се налага да се справяте с мрежова връзка и уеб сървър, и вашият клиент няма да се наложи да се включва.

  • За съжаление, пренаписването на тези Java приложения е добре извън обхвата на това, което трябва да правя. Сайтът на WordPress обслужва съдържание на някои страници, но други „страници“ наистина се обслужват от Java приложения, хоствани от Tomcat, и използват горния и долния колонтитул, за да обединят външния вид и усещането на всичко.

Изглежда, че трябва да направя пренаписването като прокси, тъй като пренаписвах към URL адрес. Засега това изглежда работи добре:

 RewriteRule '.*header\.php' 'http://site1.mycompany.com/common-files/header.php' [P,L] RewriteRule '.*footer\.php' 'http://site1.mycompany.com/common-files/footer.php' [P,L] 

е работил за вас: Charles Robertson | Искате ли да се свържете с нас?

Полезна информация