Переход по ссылке, которая не является частью приложения Django, приводит к ошибке 404
У меня был сайт wordpress на "mydomain.com" с установкой whmcs на mydomain.com/portal. все было хорошо. Недавно я избавился от установки wordpress и создал Django-сайт на mydomain.com. Установка WHMCS на mydomain.com/portal все еще там.
Но вот в чем проблема:
- при посещении mydomain.com/portal выдает 404 ошибку
- то же самое для mydomain.com/portal/admin (404 ошибка)
страницы загружаются, если я посещаю mydomain.com/portal/index.php или mydomain.com/portal/login
Мой текущий файл .htaccess на сайте mydomain.com:
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
Header always set Content-Security-Policy "upgrade-insecure-requests;"
# DO NOT REMOVE. CLOUDLINUX PASSENGER CONFIGURATION BEGIN
PassengerAppRoot "/home/user/mydomain.com"
PassengerBaseURI "/"
PassengerPython "/home/usr/virtualenv/mydomain.com/3.9/bin/python"
# DO NOT REMOVE. CLOUDLINUX PASSENGER CONFIGURATION END
# DO NOT REMOVE OR MODIFY. CLOUDLINUX ENV VARS CONFIGURATION BEGIN
<IfModule Litespeed>
</IfModule>
# DO NOT REMOVE OR MODIFY. CLOUDLINUX ENV VARS CONFIGURATION END
# Newly added text below here, in order to troubleshoot CSS not showing up
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^static/(.*)$ /home/usr/mydomain.com/staticfiles/$1 [QSA,L,NC]
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^media/(.*)$ /home/usr/mydomain.com/blog_images/$1 [QSA,L,NC]
</IfModule>
<FilesMatch "\.(?i:ico|flv|jpg|jpeg|png|gif|js|css)$">
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 month"
</IfModule>
FileETag MTime Size
</FilesMatch>
Я попробовал добавить нижеприведенный вариант, но это не помогло.
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/portal/
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
Header always set Content-Security-Policy "upgrade-insecure-requests;"
Я пытаюсь заставить установку whmcs загружаться как раньше по адресу mydomain.com/portal вместо того, чтобы ссылаться на index.php
Вы перешли с сайта WordPress на сайт Django, поэтому правила .htaccess могут потребовать некоторой корректировки, чтобы приспособиться к новой установке. Вот измененная версия вашего файла .htaccess, которая должна правильно направлять запросы к установке WHMCS:
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
# Redirect requests to WHMCS installation
RewriteRule ^portal(/.*)?$ /portal/index.php [L]
# Your existing rules below
Header always set Content-Security-Policy "upgrade-insecure-requests;"
# DO NOT REMOVE. CLOUDLINUX PASSENGER CONFIGURATION BEGIN
PassengerAppRoot "/home/user/mydomain.com"
PassengerBaseURI "/"
PassengerPython "/home/usr/virtualenv/mydomain.com/3.9/bin/python"
# DO NOT REMOVE. CLOUDLINUX PASSENGER CONFIGURATION END
# DO NOT REMOVE OR MODIFY. CLOUDLINUX ENV VARS CONFIGURATION BEGIN
<IfModule Litespeed>
</IfModule>
# DO NOT REMOVE OR MODIFY. CLOUDLINUX ENV VARS CONFIGURATION END
# Newly added text below here, in order to troubleshoot CSS not showing up
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^static/(.*)$ /home/usr/mydomain.com/staticfiles/$1 [QSA,L,NC]
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^media/(.*)$ /home/usr/mydomain.com/blog_images/$1 [QSA,L,NC]
</IfModule>
<FilesMatch "\.(?i:ico|flv|jpg|jpeg|png|gif|js|css)$">
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 month"
</IfModule>
FileETag MTime Size
</FilesMatch>
"RewriteRule ^portal(/.*)?$ /portal/index.php [L]" должно перенаправлять все запросы к /portal на /portal/index.php, позволяя WHMCS обрабатывать маршрутизацию внутри, как это было раньше.