【发布时间】:2019-03-08 07:59:29
【问题描述】:
这看起来很基础,网上有很多关于 .htaccess 的问题,但是经过两天的研究,我仍然无法按照我想要的方式工作。
我想要的是:
对所有请求强制使用 https
始终使用“www”版本的 url。
在多个域上工作(但不将它们全部重定向到一个主域)。我所有的域都指向同一个文件夹(因此他们将使用相同的代码库),并且在其根目录中是 .htaccess 文件。
删除 url 的“index.php”部分,使其人性化和 SEO 友好。
这是我目前所拥有的:
从 CodeIgniter 的基本 .htaccess 代码开始,如userguide 所示:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1
原来,最后一行有[L]标志,但我省略了它,所以它会继续下面的规则。
(我是否正确假设它采用之前 RewriteRule 中的 url 输出,并对其执行以下匹配?)
# for non www urls, add www and force https:
RewriteCond %{HTTP_HOST}(.*) !^www\. [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R,L]
# for www urls, just force https:
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R,L]
上面的代码正在完成我上面列表中的任务 1-3,但 index.php 仍然显示在地址栏中。 如何删除它?
【问题讨论】:
标签: codeigniter .htaccess