JSOU VAŠE SVÍČKY PŘIPRAVENY?

Máme server, který je nakonfigurován tak, aby sloužil několika webům.

Jedním z těchto webů je web WordPress a některé z jeho stránek jsou skutečně webové webové aplikace Java hostované společností Tomcat. Webové aplikace Java vyžadují, aby localhost získal záhlaví a zápatí, aby se při načítání jejich stránek vše shodovalo s částmi webu WordPress.

To v poslední době způsobuje několik zajímavých konfiguračních výzev, protože jsme se také nedávno pokusili implementovat „výchozí“ weby k zachycení provozu, pro který apache nemá žádnou jinou konfiguraci.

Co se teď stane, je to, když si to Java aplikace vyžádají header.php z localhost výchozí web (jehož ServerName je localhost) nevrací nic, protože v adresáři, kde je umístěn obsah výchozího webu, není žádný takový soubor.

Snažil jsem se to opravit přesměrováním, aby aplikace Java byla přesměrována na správnou adresu URL pro záhlaví takto:

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

Toto mírně napravilo věci: Nyní, když se pokouším načíst stránku založenou na Javě, nezobrazí se mi chyba, ale dostanu:

Nalezeno. Stránka se přesunula sem

(kde „zde“ je odkaz na header.php)

To je stále problém, protože potřebuji obsah header.php, ne odkaz na header.php.

Existuje nějaký způsob, jak to učinit plynulejším, aby aplikace Java ani nevěděly, že narazily na přesměrování?

V ideálním případě bych upravil aplikace Java tak, aby to zvládly trochu lépe, ale to je mimo rozsah (ne moje aplikace, ani moje oprávnění je měnit).

  • Nakonfiguruji svůj výchozí web tak, aby sloužil 404 Nenalezeno. Pokud někdo narazí na můj webový server s neznámým názvem hostitele, měl by dostat chybu.
  • @StephenOstermiller: Máme několik webů a bylo rozhodnuto zobrazovat vlastní stránku se seznamem platných webů hostovaných tímto serverem.
  • Pak možná nepoužívejte stejný rámec pouze pro tuto stránku. Stačí pro tento účel nakonfigurovat jednu statickou stránku. Dokonce jste mohli nakonfigurovat stránku 404.
  • @StephenOstermiller: Myslím, že jsem vás mohl zmást, omlouvám se. Výchozí stránka a stránka se načítají dobře, přesně tak, jak mají. Problém je, že teď protože pro ServerName "localhost" je nakonfigurován výchozí web, aplikace Java nemohou získat záhlaví a zápatí (nejsou součástí výchozího serveru). Věci fungovaly dobře před byl přidán výchozí web.

Záhlaví a zápatí WordPress nemusí být nutně navrženy pro přímý přístup. I kdyby to fungovalo, nebylo by pro klienta výhodné, kdyby na ně musel volat sám. Také se zdá trochu nedbalé stavět části vašeho webu na samostatných serverech.

Doporučil bych zkusit najít jiné řešení. Pokud musíte stahovat obsah ze svého webu Java přes internet, jednou z možností může být, aby váš web WordPress zobrazoval většinou prázdnou stránku, možná s malým komentářem namísto těla, a pak jej můžete vytáhnout přímo pomocí Java a nahraďte tento komentář novým textem, než jej obsadíte.

Zmíníte se však, že název serveru pro prostředek je „localhost“. To má dva důležité důsledky. Za prvé, že hostitel nemusí zpracovávat volání „localhost“ tak, jak očekáváte kvůli položkám VirtualHost, takže zjistěte, zda se jedná o problém. Důležitější však je, že jste na stejném serveru se skriptem.

Místo volání přes internet, které vyžadují čas a režii, můžete data shromažďovat přímo ze skriptu PHP. Můžete například uskutečnit systémové volání php dává úplnou cestu ke skriptu. Možná budete muset nastavit některé proměnné prostředí, například HTTP_HOST a REQUEST_URI, ale cokoli, co děláte přímo prostřednictvím PHP, bude čistší a rychlejší než řešení síťového připojení a webového serveru a váš klient se nebude muset zapojit.

  • Bohužel přepsání těchto Java aplikací je studna mimo rámec toho, co mám dělat. Web WordPress poskytuje obsah na některých stránkách, ale jiné „stránky“ jsou skutečně poskytovány aplikacemi Java hostovanými společností Tomcat a pomocí záhlaví a zápatí sjednocují vzhled všeho.

Vypadá to, že musím přepsat jako proxy, protože jsem přepisoval na URL. Zatím se zdá, že to funguje dobře:

 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] 

Pracoval pro vás: Charles Robertson | Chcete nás kontaktovat?