У меня есть приложение cakephp 3.5.x, работающее и подключенное к сети.
Доступ к странице с помощью http : //www.xy.de/intern/users/login все работает отлично.
Доступ к странице с помощью https : //www.xy.de/intern/users/login Я получаю следующую ошибку:
Запрошенный адрес '/webroot / users / login 'не был найден на этом сервере.
Как настроить приложение так, чтобы https работал?
Я много пытался изменить файлы .htaccess.но до сих пор ничего не работало.
Мои текущие файлы .htaccess выглядят так:
.htaccess
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ webroot/ [L]
RewriteRule (.*) webroot/$1 [L]
</IfModule>
webroot / .htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
В логах cakephp я получаю следующую ошибку:
Error: [Cake\Routing\Exception\MissingControllerException] Controller class Webroot could not be found.
Request URL: /webroot/users/login
Stack Trace:
#0 vendor/cakephp/cakephp/src/Http/ControllerFactory.php(38): Cake\Http\ControllerFactory->missingController(Object(Cake\Http\ServerRequest))
#1 vendor/cakephp/cakephp/src/Http/ActionDispatcher.php(90): Cake\Http\ControllerFactory->create(Object(Cake\Http\ServerRequest), Object(Cake\Http\Response))
#2 vendor/cakephp/cakephp/src/Http/BaseApplication.php(103): Cake\Http\ActionDispatcher->dispatch(Object(Cake\Http\ServerRequest), Object(Cake\Http\Response))
#3 vendor/cakephp/cakephp/src/Http/Runner.php(65): Cake\Http\BaseApplication->__invoke(Object(Cake\Http\ServerRequest), Object(Cake\Http\Response), Object(Cake\Http\Runner))
#4 vendor/cakephp/cakephp/src/Routing/Middleware/RoutingMiddleware.php(107): Cake\Http\Runner->__invoke(Object(Cake\Http\ServerRequest), Object(Cake\Http\Response))
#5 vendor/cakephp/cakephp/src/Http/Runner.php(65): Cake\Routing\Middleware\RoutingMiddleware->__invoke(Object(Cake\Http\ServerRequest), Object(Cake\Http\Response), Object(Cake\Http\Runner))
#6 vendor/cakephp/cakephp/src/Routing/Middleware/AssetMiddleware.php(88): Cake\Http\Runner->__invoke(Object(Cake\Http\ServerRequest), Object(Cake\Http\Response))
#7 vendor/cakephp/cakephp/src/Http/Runner.php(65): Cake\Routing\Middleware\AssetMiddleware->__invoke(Object(Cake\Http\ServerRequest), Object(Cake\Http\Response), Object(Cake\Http\Runner))
#8 vendor/cakephp/cakephp/src/Error/Middleware/ErrorHandlerMiddleware.php(95): Cake\Http\Runner->__invoke(Object(Cake\Http\ServerRequest), Object(Cake\Http\Response))
#9 vendor/cakephp/cakephp/src/Http/Runner.php(65): Cake\Error\Middleware\ErrorHandlerMiddleware->__invoke(Object(Cake\Http\ServerRequest), Object(Cake\Http\Response), Object(Cake\Http\Runner))
#10 vendor/cakephp/cakephp/src/Http/Runner.php(51): Cake\Http\Runner->__invoke(Object(Cake\Http\ServerRequest), Object(Cake\Http\Response))
#11 vendor/cakephp/cakephp/src/Http/Server.php(81): Cake\Http\Runner->run(Object(Cake\Http\MiddlewareQueue), Object(Cake\Http\ServerRequest), Object(Cake\Http\Response))
#12 webroot/index.php(40): Cake\Http\Server->run()
#13 {main}
Приложение размещено на strato.de, поэтому я не имею полного контроля над настройками сервера.
Я также связался со службой поддержки Strato.и получил ответ, что моя цель была слишком сложной с технической точки зрения.
Все остальные страницы в том же веб-пространстве, которые не используют cakephp, отлично работают с https.
Сравнение значений $ _SERVER из webroot /index.php показывает мне следующие результаты:
http:
"SCRIPT_URL":"/intern/users/login",
"SCRIPT_URI":"http://www.xy.de/intern/users/login",
"REQUEST_URI":"/intern/users/login",
https:
"SCRIPT_URL":"/intern/webroot/users/login",
"SCRIPT_URI":"https://www.xy.de/intern/webroot/users/login",
"REQUEST_URI":"/intern/webroot/users/login",
тоже самое:
"PHP_SELF":"/intern/webroot/index.php",
Но я не знаю, откуда эти различия и как их устранить.