.htaccess останавливает сайт от работает, а сайты WP работают, почему?

У меня есть три сайта, работающих на общем хостинге (Bluehost) с выделенным IP-адресом. Описание выглядит следующим образом:

  • example.com => это основной сайт и домен, это WP
  • example.net => это дополнительный домен (не знайте, знаком ли вам этот термин) и у вас есть другой сайт WP
  • subsite.example.net => это отдельное приложение PHP

У каждого WP есть свое .htacess , который выглядит так:

# 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

С этим файлом .htaccess оба сайта WP работают нормально, а автономное приложение - нет. Если я удалю файл .htaccess , произойдет обратное: автономное приложение будет работать, а сайты WP - нет.

Может ли кто-нибудь помочь мне найти решение этой проблемы?

Обновление

Я играю со следующей конфигурацией для файла .htaccess для автономного приложения PHP:

<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>

но не работает, так как я выхожу из приложения, как только нажимаю на любую ссылку.

Автономный сайт находится по адресу / public_html / plataforma , а WP - по адресу / public_html ]. Почему я сейчас ошибаюсь?

2
задан 9 November 2016 в 18:10
2 ответа

Важна основная структура файлов / каталогов. Если эти 3 сайта, по сути, находятся в одной учетной записи - в одном родительском каталоге, то каждый сайт, вероятно, находится в отдельном подкаталоге (что часто является тем, что аддоны и поддомены используются по умолчанию в общей среде), и у вас должен быть отдельный .htaccess файл в каждом подкаталоге. Не одно для всех.

ОБНОВЛЕНИЕ №1: Попробуйте добавить исключение в WordPress .htaccess , чтобы исключить любые перезаписи при доступе через поддомен. Например:

# 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

Однако в этом нет необходимости, поскольку (как упоминалось в комментариях) директивы mod_rewrite в файле .htaccess автономного приложения должны полностью переопределять их (поскольку автономное приложение находится в подкаталог).

Другое предостережение при добавлении кода в блок WordPress заключается в том, что он может быть перезаписан при следующем обновлении.

ОБНОВЛЕНИЕ № 2: В качестве альтернативы попробуйте добавить Директива RewriteOptions в файле .htaccess автономного приложения (расположенном в подкаталоге):

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteOptions IgnoreInherit
    :

Если это сработает, то можно предположить, что существует RewriteOptions InheritDown [До] директива в конфигурации сервера, которая разрешает наследование директив mod_rewrite в родительском каталоге. Обратите внимание, что IgnoreInherit и InheritDown [Before] являются функциями Apache 2.4+.

(РЕДАКТИРОВАТЬ: кажется, что OP находится на Apache 2.2.31, поэтому указанная выше директива приводит к 500 Внутренняя ошибка сервера.)

ОБНОВЛЕНИЕ № 3: Вы также можете попробовать удалить директиву RewriteBase / из файлов .htaccess и удалить префикс косой черты в WordPress RewriteRule подстановка для соответствия правилам в файле .htaccess автономного приложения. Итак, файл WordPress .htaccess становится:

# 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

Последняя прочитанная ранее строка: RewriteRule. /index.php [L] (т.е. с префиксом косой черты). Косая черта указывает URL-путь относительно корня, без косой черты теперь он относится к каталогу, содержащему файл .htaccess .

2
ответ дан 3 December 2019 в 09:59

создать файл .htaccess для автономного приложения PHP, который перенаправит ваш код на subsite.example.net

2
ответ дан 3 December 2019 в 09:59

Теги

Похожие вопросы