URLs erradas no wp-admin no wordpress com subdiretório e proxy

4

Estou usando o apache2 e o mod-proxy para integrar blogs do wordpress em subdiretórios do meu TLD.

Host virtual Apach2 do site principal com proxy:

<VirtualHost *:80>
ServerName example.com

...

# Rewrite rule to add missing slashes
RewriteRule ^/blog$ /blog/ [R=301]
RewriteRule ^/other-blog$ /other-blog/ [R=301]

<Proxy *>
Order deny,allow
Allow from all
</Proxy>

ProxyRequests off
ProxyPass /blog/ http://blog1.localhost/
ProxyPassReverse /blog/ http://blog1.localhost/
ProxyPass /other-blog/ http://blog2.localhost/
ProxyPassReverse /other-blog/ http://blog2.localhost/

...

</VirtualHost>

Hosts virtuais do Apach2 para blogs:

<VirtualHost *:80>
ServerName blog1.localhost
DocumentRoot /var/www/blog1/
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
</VirtualHost>

Linux hospeda linhas de adição de arquivo:

127.0.0.1     blog1.localhost localhost.localdomain
127.0.0.1     blog2.localhost localhost.localdomain

Wordpress: configurações > Configurações gerais:

  • endereço do WordPress (URL): [ link
  • Endereço do site (URL): [ link

O arquivo .htaccess:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Esta configuração funciona bem em geral. Infelizmente, o back-end do Wordpress tem problemas em algumas partes, removendo as sub-pastas em URLs, resultando em problemas de salvar configurações ou carregar imagens. por exemplo:

ou

O que eu tentei até agora:

  • usou várias regras de reescrita sugeridas
  • usou várias modificações em wp-config.php encontradas aqui: link *
  • pesquisou o banco de dados mySQL por URLs configurados incorretamente

Nada disso funcionou até agora ou piorou ainda mais.

Se alguém tiver uma ideia de como resolver este problema, eu apreciaria muito isso.

*) Edit: O que eu já tentei aqui:

define('WP_HOME',  'http://' . $_SERVER['HTTP_HOST'] . '/blog');
define('WP_HOME', 'http://example.com/blog');
define('WP_SITEURL', 'http://example.com' . $_SERVER['SERVER_NAME'] . '/blog');
define('WP_SITEURL', 'http://' . $_SERVER['SERVER_NAME'] . '/blog');
define('WP_SITEURL', 'http://example.com/blog/');
    
por Oskar 11.10.2011 / 03:55

2 respostas

1

Os caminhos absolutos (e errados) estão no conteúdo gerado pelo WordPress - não há como reescrevê-los com o Apache (como o Apache saberia qual blog quer dizer quando um cliente solicita /wp-content ?).

Modificar o URL do site na configuração do WordPress é o caminho correto.

Para a instância do blog1:

define('WP_SITEURL', 'http://example.com/blog');

Para a instância do blog2:

define('WP_SITEURL', 'http://example.com/other-blog');

O que você tentou e qual comportamento você viu?

    
por 11.10.2011 / 04:13
0

Você pode precisar mover suas instalações do wordpress para um subdiretório para resolver esse problema. Uma vez feito isso, edite as suas regras de reescrita para algo semelhante a isto:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /blog1/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog1/index.php [L]
</IfModule>
    
por 22.05.2014 / 17:07