Apache 重写规则以删除 index.php 并将某些区域定向到 https

Apache 重写规则以删除 index.php 并将某些区域定向到 https

我有一个在 Apache2 上运行的 codeignitor 应用程序,我已设法使用此 .htaccess 从 URL 中删除 index.php

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 的教程。

有任何想法吗,

谢谢。

答案1

意思[L]是“最后”,即如果此规则匹配,则停止处理其他规则。我猜测CPanel 使用“虚拟”URL(即不指向实际文件),因此类似的 URL/cpanel/some-action-that-is-not-actually-a-file会被第一条规则捕获,而不是后面的规则。

尝试将最后两条规则移到RewriteEngine和第一条规则之间RewriteCond吗?

(编辑:并且还修复了问题下的评论中指出的重定向循环)

相关内容