Блог WordPress в подкаталоге сайта Django на cPanel

Я просмотрел несколько подобных постов здесь, на StackOverFlow, но не могу заставить его работать. Я хочу добиться того, чтобы любой url, содержащий /blog/, загружался с WordPress. Я переместил свой экземпляр WordPress в папку с названием blog (внутри public_html), и он прекрасно загружается, когда экземпляр Django не активен с этим файлом .htaccess в public_html. У меня нет файла .htaccess в папке blog.

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?mysite.com$
RewriteCond %{REQUEST_URI} !^/blog/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /blog/$1
RewriteCond %{HTTP_HOST} ^(www.)?mysite.com$
RewriteRule ^(/)?$ blog/index.php [L] 
</IfModule>

Я также изменил URL WordPress и адрес сайта в базе данных на mysite.com/blog/ с помощью https://

Когда я активирую экземпляр Django, я изменяю файл .htaccess на следующий.

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_URI} ^/blog/
RewriteCond %{HTTP_HOST} ^(www.)?mysite.com/blog/$
RewriteRule . /blog/index.php [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . / [L]
</IfModule>

# DO NOT REMOVE. CLOUDLINUX PASSENGER CONFIGURATION BEGIN
PassengerAppRoot "/home/usr/mysite.com"
PassengerBaseURI "/"
PassengerPython "/home/usr/virtualenv/mysite.com/3.11/bin/python"
# DO NOT REMOVE. CLOUDLINUX PASSENGER CONFIGURATION END

# DO NOT REMOVE OR MODIFY. CLOUDLINUX ENV VARS CONFIGURATION BEGIN
<IfModule Litespeed>
SetEnv DEBUG False
etc...
</IfModule>
# DO NOT REMOVE OR MODIFY. CLOUDLINUX ENV VARS CONFIGURATION END

Я играл с различными вариантами этого файла .htaccess, и иногда он загружается с перебоями, но иногда изображения, таблицы стилей и все остальное отсутствует, иногда он загружается, а затем я не могу войти в mysite/blog/wp-admin из-за слишком большого количества перенаправлений.

Вот решение для тех, кто хочет сделать это (спасибо Крису за подсказку).

# if the Apache module mod_rewrite is enabled on the server then run the rules inside this block
<IfModule mod_rewrite.c>

# activate the Apache mod_rewrite engine
RewriteEngine On

# set the base URL for relative rewrite rules. 
# specifies that the base URL for rewriting is the root directory (/).
RewriteBase /

# if url contains /blog/ then load /blog/index.php. 
# [L] indicates that this is the last rule to be processed if url contains /blog/
RewriteCond %{REQUEST_URI} /blog/
RewriteRule . /blog/index.php [L]

# Serve other requests with Python
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . / [L]
</IfModule>

Если это не помогло, попробуйте добавить следующее в файл .htaccess в папке /blog/.

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} /blog/
RewriteRule . /blog/index.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /blog/$1
RewriteRule ^(/)?$ index.php [L] 
</IfModule>
Вернуться на верх