![Apache 重写规则以删除 index.php 并将某些区域定向到 https](https://linux22.com/image/796355/Apache%20%E9%87%8D%E5%86%99%E8%A7%84%E5%88%99%E4%BB%A5%E5%88%A0%E9%99%A4%20index.php%20%E5%B9%B6%E5%B0%86%E6%9F%90%E4%BA%9B%E5%8C%BA%E5%9F%9F%E5%AE%9A%E5%90%91%E5%88%B0%20https.png)
我有一个在 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
吗?
(编辑:并且还修复了问题下的评论中指出的重定向循环)