我有一个在 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
吗?
(编辑:并且还修复了问题下的评论中指出的重定向循环)