У меня есть три сайта, работающих на общем хостинге (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
]. Почему я сейчас ошибаюсь?
Важна основная структура файлов / каталогов. Если эти 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
.
создать файл .htaccess
для автономного приложения PHP, который перенаправит ваш код на subsite.example.net