przekierowanie – WordPress (za HAProxy i Jetty), a nie na wielu serwerach, w podfolderze – i /en/wp-admin/przekierowuje do /wp-admin/
Używam nietypowej konfiguracji do hostowania 3 instalacji WordPress w CentOS 8 Linux.
Z przodu mam HAProxy (do odciążenia TLS), następnie skonfigurowałem Jetty dla FastCGI i php-fpm i wreszcie WordPress.
Używam WordPressa wokół gry słownej napisanej w Pixi.js.
Od kilku lat używam 3 różnych adresów IP i 3 różnych nazw domen dla 3 wersji językowych mojej gry: en, de, ru.
Jednak moja gra słowna nie powiodła się, więc zdecydowałem się zrezygnować z dodatkowych nazw domen i adresów IP i po prostu użyć folderów do obsługi mojej gry:
- wordbyfarber.com/en
- wordbyfarber.com/de
- wordbyfarber.com/ru
To zadziałało dobrze, nie używam multisite i ustawiłem
define('WP_HOME', '
define('WP_SITEURL', '
w en/wp-config.php (to samo dla de i ru), a także w desce rozdzielczej:
I już możesz zobaczyć mój problem na powyższym zrzucie ekranu:
Podczas gdy strony internetowe dla użytkowników działają dobrze, pulpit administratora pod adresem /en/wp-admin/
natychmiast przekierowuje do /wp-admin
co nie jest w porządku, ponieważ nie używam multisite.
Próbowałem sam rozwiązać problem i dużo szukałem w dokumentach itp.
Zastanawiałem się również, kto robi przekierowanie, czy to JS czy PHP?
Wydaje mi się, że robi to kod PHP WordPressa, który z jakiegoś powodu wysyła new Location
nagłówek:
Jak widać na powyższym zrzucie ekranu, podczas używania wget
– z jakiegoś powodu WordPress usunie /en
ciąg z /en/wp-admin
path i przekierować do nowej lokalizacji.
Dlaczego tak się dzieje i jak to zatrzymać?
Próbowałem wyszukać w kodzie źródłowym WordPress za pomocą:
find ./en/ -iname \*.php| xargs grep -riw redirect_to
ale nie udało mi się jeszcze znaleźć przyczyny.
AKTUALIZACJA: Nie mam żadnego pliku .htaccess, ponieważ używam Jetty skonfigurowanego dla FastCGI z następującym plikiem konfiguracyjnym:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN"
"
<Configure class="org.eclipse.jetty.servlet.ServletContextHandler">
<New id="root" class="java.lang.String">
<Arg>/var/www/html/wordsbyfarber.com/en</Arg>
</New>
<Set name="contextPath">/en</Set>
<Set name="resourceBase"><Ref refid="root" /></Set>
<Set name="welcomeFiles">
<Array type="string">
<Item>index.php</Item>
<Item>index.html</Item>
</Array>
</Set>
<Call name="addFilter">
<Arg>org.eclipse.jetty.fcgi.server.proxy.TryFilesFilter</Arg>
<Arg>/*</Arg>
<Arg>
<Call name="of" class="java.util.EnumSet">
<Arg><Get name="REQUEST" class="javax.servlet.DispatcherType" /></Arg>
</Call>
</Arg>
<Call name="setInitParameter">
<Arg>files</Arg>
<Arg>$path /index.php?p=$path</Arg>
</Call>
</Call>
<Call name="addServlet">
<Arg>
<New class="org.eclipse.jetty.servlet.ServletHolder">
<Arg>default</Arg>
<Arg>
<Call name="forName" class="java.lang.Class">
<Arg>org.eclipse.jetty.servlet.DefaultServlet</Arg>
</Call>
</Arg>
<Call name="setInitParameter">
<Arg>dirAllowed</Arg>
<Arg>false</Arg>
</Call>
<Call name="setInitParameter">
<Arg>gzip</Arg>
<Arg>true</Arg>
</Call>
</New>
</Arg>
<Arg>/</Arg>
</Call>
<Call name="addServlet">
<Arg>org.eclipse.jetty.fcgi.server.proxy.FastCGIProxyServlet</Arg>
<Arg>*.php</Arg>
<Call name="setInitParameter">
<Arg>proxyTo</Arg>
<Arg>
</Call>
<Call name="setInitParameter">
<Arg>prefix</Arg>
<Arg>/</Arg>
</Call>
<Call name="setInitParameter">
<Arg>scriptRoot</Arg>
<Arg><Ref refid="root" /></Arg>
</Call>
<Call name="setInitParameter">
<Arg>scriptPattern</Arg>
<Arg>(.+?\\.php)</Arg>
</Call>
</Call>
</Configure>