我阅读了很多关于这个主题的帖子,但仍然无法解决我的问题。在我的httpd.conf
我有一个别名"/folder2" "/home/web/folder1"
。此外,我在.htaccess
中有这些行,以便将所有可能的网址重写为https://www。:
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
除了mydomain.com/folder2
的所有网址外,此功能完美无缺。它们仍保留在http://
中,为了使用https://
访问它们,我必须明确键入它。
答案 0 :(得分:1)
晚上好:)
别名和重写是否在同一个上下文中(例如vhost)?因为如果它们不是,则可以在重写之前应用别名,因此重写可能永远不会“命中”。
Read this有关处理订单和合并规则的更多信息。
要修复它,请先将重写规则放在第二位。 Alias应该仍然可以工作,然后已经应用了重写规则:)
修改强>
默认情况下,RewriteRule中的目标(或替换字符串)被假定为文件路径。使用[PT]标志会将其视为URI。也就是说,使用[PT]标志会导致RewriteRule的结果通过URL映射传回,因此基于位置的映射(例如Alias,Redirect或ScriptAlias)可能有机会生效。
例如,如果您有/图标的别名,并且指向了RewriteRule,则应使用[PT]标志来确保对Alias进行评估。
摘自here