我试图强制所有的url到https,www,没有尾随斜杠,并最终将所有的请求定向到一个php控制器页面。服务器使用LiteSpeed。我已经尝试过了,但它似乎没有完全发挥预期的作用。它似乎处理尾随斜杠问题和https,但不是www。
# Turn on Rewrite Engine
RewriteEngine on
# Force a trailing slash except on files and directories that actually exist on server
RewriteCond %{REQUEST_URI} !(.+)/$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ https://www.example.com/$1/ [R=301,L]
# Force HTTPS and WWW
RewriteCond %{HTTP_HOST} !^www\.(.*)$ [OR,NC]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
# Redirect all requests to php controller except files and directories that actually exist
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
那么,我如何确保所有的请求都由我的控制器页面处理,并强制url为https,www,并添加尾随斜杠,并在一个重定向中完成?
2条答案
按热度按时间yhived7q1#
虽然它有两个重定向。我希望它只做一个。
您可以使用此代码在单个规则和单个重定向中执行所有重定向:
请确保在测试此更改之前清除浏览器缓存。
1rhkuytd2#
@anubhava答案在我的网站上不起作用。它中断了到资源等的链接,但这只在一个重定向时起作用。