我知道有很多类似的问题,但是我花了2天多的时间调查它没有成功,所以你是我最后的希望)
我写了以下重写规则:
RewriteCond %{HTTPS} off [NC]
RewriteCond %{REQUEST_URI} ^((/member/settings)?/orders/?)$ [NC]
RewriteRule (.*) https://%{HTTP_HOST}/$1 [L,R=301]
RewriteRule \.(gif|jpe?g|png|css|js|eot|woff|ttf|svg)$ - [NC,L]
RewriteCond %{HTTPS} on [NC]
RewriteCond %{REQUEST_URI} !^((/member/settings)?/orders/?)$ [NC]
RewriteRule (.*) http://%{HTTP_HOST}/$1 [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [NC,QSA,L]
我想要 URLexample.com/orders/
并example.com/member/settings/orders/
始终重定向到 HTTPS,而所有其他人都强制使用 HTTP。此外,所有查询都应转发到index.php
. 而且,显然,所有媒体文件都应与请求的协议保持一致。
当我http://example.com/orders/
第一次请求时,它重定向到https://example.com/orders/
,但第二次重定向到http://example.com/index.php?/orders/
. 实际上是预期的,但问题是“index.php”出现在浏览器的地址栏中。
问题是如何摆脱浏览器地址栏中的“index.php”?
任何帮助将不胜感激。