У меня есть приложение codeignitor, работающее на Apache2, мне удалось удалить index.php из URL-адресов с помощью этого .htaccess
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]
Теперь я хочу, чтобы определенные части сайта перенаправлялись на https, я пробовал это:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]
RewriteRule ^/?cpanel/(.*) https://%{SERVER_NAME}/cpanel/$1 [R,L]
RewriteRule ^/?login/(.*) https://%{SERVER_NAME}/login/$1 [R,L]
Но не работает. Я должен сказать, что когда дело доходит до Apache, я переписываю новичка. Я не могу найти никаких руководств о том, как удалить index.php и переписать / перенаправить определенные части сайта на https.
Любые идеи,
Спасибо.
В [L]
означает "последний", т.е. прекратить обработку дальнейших правил, если это правило совпадает. я угадать что CPanel использует «виртуальные» URL-адреса (т. е. не указывает на фактические файлы), и, следовательно, такие URL-адреса, как /cpanel/some-action-that-is-not-actually-a-file
попадают в ловушку по первому правилу, а не по последним.
Попробуйте переместить последние два правила между RewriteEngine
и твой первый RewriteCond
?
(РЕДАКТИРОВАТЬ: а также исправить цикл перенаправления, как указано в комментариях под вопросом)