【发布时间】:2020-01-27 19:25:46
【问题描述】:
使用 htaccess 我想强制 http 到 https 并同时重定向到 www。以及我的应用程序文件所在的“公共”文件夹。
结果应该是http://example.com应该重定向到https://www.example.com/public/
要重定向到我管理的 https 和 www:
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://www.%1%{REQUEST_URI} [L,NE,R=301]
通过使用重定向到我管理的“公共”文件夹:
ReWriteCond %{REQUEST_URI} !^public/
ReWriteRule ^(.*)$ public/$1 [L]
现在我需要将这些结合起来,但我的多次尝试并没有导致重定向有效,因此我需要一些建议。
编辑: 在 public 文件夹中是另一个 htaccess 文件:
SetEnv APPLICATION_ENV "production"
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ /index.php [NC,L]
【问题讨论】:
-
你能显示你的完整的.htaccess
-
ReWriteRule ^(.*)$ public/$1 [L]- 请注意,这是内部重写,而不是“重定向”(这意味着外部重定向)问题中说明。大概您的网址实际上不包含/public子目录,并且不会向您的用户公开? -
@MrWhite 是正确的。这是内部重写。
-
@anubhava 在这一点上这是我的 htaccess,
RewriteEngine On在上面。 -
这些规则是正确的,问题所示的顺序也是正确的。
标签: .htaccess redirect mod-rewrite https