.htaccess está parando um site de trabalhos enquanto sites WP funcionam, por quê?

2

Eu tenho três sites em execução em uma hospedagem compartilhada (Bluehost) com um endereço IP dedicado. A descrição é a seguinte:

  • example.com = > este é o site principal e o domínio, é um WP
  • example.net = > este é um domínio complementar (não sei se você está familiarizado com o termo) e está executando outro site do WP
  • subsite.example.net = > este é um aplicativo PHP independente

Cada WP tem seu próprio arquivo .htacess , que se parece com:

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

Com este arquivo .htaccess , ambos os sites do WP funcionam bem, mas o aplicativo independente não funciona. Se eu remover o arquivo .htaccess , é o oposto, o aplicativo independente funciona, mas os sites do WP não.

Algum pode me ajudar a encontrar uma solução para esse problema?

Atualizar

Eu estou jogando com a seguinte configuração para o arquivo .htaccess para o aplicativo PHP independente:

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

    # Add Caching.
    <FilesMatch ".(ico|jpg|jpeg|png|gif|js|css|swf)$">
        Header set Cache-Control "max-age=10800"
    </FilesMatch>

    # Prevent viewing of htaccess file.
    <Files .htaccess>
        order allow,deny
        deny from all
    </Files>

    # Prevent directory listings
    Options All -Indexes

    # Compress text, html, javascript, css, xml:
    AddOutputFilterByType DEFLATE text/plain
    AddOutputFilterByType DEFLATE text/html
    AddOutputFilterByType DEFLATE text/xml
    AddOutputFilterByType DEFLATE text/css
    AddOutputFilterByType DEFLATE application/xml
    AddOutputFilterByType DEFLATE application/xhtml+xml
    AddOutputFilterByType DEFLATE application/rss+xml
    AddOutputFilterByType DEFLATE application/javascript
    AddOutputFilterByType DEFLATE application/x-javascript
</IfModule>

mas não está funcionando, pois sou excluído do aplicativo assim que clico em qualquer link.

O site autônomo vive em /public_html/plataforma enquanto o WP vive em /public_html . Por que estou fazendo errado neste momento?

    
por ReynierPM 09.11.2016 / 04:48

2 respostas

2

O que é importante é a estrutura de arquivos / diretórios subjacente. Se esses três sites estiverem essencialmente na mesma conta - o mesmo diretório pai -, cada site provavelmente estará em um subdiretório separado (que geralmente é como o addon e subdomínios padrão em um ambiente compartilhado) e você deverá ter um arquivo .htaccess separado em cada subdiretório. Não é um por todos.

UPDATE # 1: Tente adicionar uma exceção ao WordPress .htaccess para excluir especificamente qualquer nova regra se acessada pelo subdomínio. Por exemplo:

# BEGIN WordPress
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]

    RewriteCond %{HTTP_HOST} !^subsite\.example\.net$ [NC]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
</IfModule>  
# END WordPress

No entanto, isso realmente não deveria ser necessário já que (como mencionado nos comentários), as diretivas mod_rewrite no arquivo .htaccess do aplicativo independente devem substituí-las completamente (porque o aplicativo independente está em um subdiretório).

A outra limitação ao adicionar código ao bloco WordPress é que isso pode ser substituído pela próxima atualização.

UPDATE # 2: Como alternativa, tente adicionar a diretiva RewriteOptions ao arquivo .htaccess do aplicativo independente (localizado em um subdiretório):

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteOptions IgnoreInherit
    :

Se isto funcionar, então parece sugerir que existe uma diretiva RewriteOptions InheritDown[Before] na configuração do servidor que está permitindo que as diretivas mod_rewrite no diretório pai sejam herdadas. Observe que IgnoreInherit e InheritDown[Before] são recursos do Apache 2.4+.

(EDIT: Parece que o OP está no Apache 2.2.31, então a diretiva acima resulta em um erro 500 Internal Server.)

UPDATE # 3: Você também pode tentar remover a diretiva RewriteBase / dos arquivos .htaccess e remover o prefixo barra na substituição RewriteRule do WordPress para corresponde as regras no arquivo .htaccess do aplicativo independente. Então, o arquivo .htaccess do WordPress se torna:

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

A última linha lida anteriormente: RewriteRule . /index.php [L] (ou seja, com um prefixo de barra). A barra indica um caminho de URL relativo à raiz, sem a barra agora em relação ao diretório que contém o arquivo .htaccess .

    
por 09.11.2016 / 11:03
3

crie o arquivo .htaccess para seu aplicativo PHP autônomo que redirecionará seu código para subsite.example.net

    
por 09.11.2016 / 07:53