htaccess中删除index.php?来自URL

时间:2019-12-06 10:21:22

标签: php .htaccess codeigniter

当我的网站配置了SSL时,使用HTTPS://访问该网站时,一切正常,但是当我使用HTTP进行访问时,我得到的是“ index.php?”。在网址末尾:https://domaine.com/index.php?/

这是我的HTACESS:

RewriteEngine on
RewriteCond $1 !^(index\.php|assets|images|js|css|uploads|favicon.png)
RewriteCond %(REQUEST_FILENAME) !-f
RewriteCond %(REQUEST_FILENAME) !-d
RewriteRule ^(.*)$ ./index.php?/$1 [L]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

您的规则如下:

RewriteEngine on

RewriteCond %{THE_REQUEST} /index\.php [NC]
RewriteCond %{REQUEST_URI} ^(.*/)index\.php$ [NC]
RewriteRule ^ https://%{HTTP_HOST}%1 [L,R=301,NE]

RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]

RewriteCond $1 !^(index\.php|assets|images|js|css|uploads|favicon.png)
RewriteCond %(REQUEST_FILENAME) !-f
RewriteCond %(REQUEST_FILENAME) !-d
RewriteRule ^(.*)$ ./index.php?/$1 [L,QSA]

确保在测试之前在新的浏览器中对其进行测试或完全清除浏览器缓存。

答案 1 :(得分:0)

以下将强制使用https重写任何http请求。例如,以下代码强制向http://example.com的请求加载https://example.com。它还会强制直接链接的资源(图像,css等)使用https。

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]

如果这不适合您,请首先检查您的行尾。从网络浏览器复制/粘贴到文本编辑器可能无法正常工作,因此粘贴到文本编辑器后,您应该删除每个换行符并将其重新添加(换行符=返回键)。