重写为https和www不能用于别名

问题描述:

我读了大量关于此主题的帖子,但仍无法解决我的问题。在我的httpd.conf我有一个别名,如"/folder2" "/home/web/folder1"。我也有我的.htaccess这些线路连接到所有可能的URL改写为https://www重写为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所有URL。他们仍然在http://和为了使他们与https://我必须明确键入它。

+0

摘录得到肯定它不是哪一方缓存问题 – Deadooshka

+0

缓存? – 0711master

+0

永久301重定向是难以缓存的,所以你不会知道从哪里得到响应,除非跟踪http-headers。 – Deadooshka

晚上好:)

都,别名和重写,在同一范围内(如虚拟主机)?因为如果它们不是,那么别名可以在重写之前应用,因此重写可能永远不会“打”。

Read this了解有关处理顺序和合并规则的更多信息。

要修复它,首先放置重写规则,别名第二。别名应该仍然工作和重写规则已经被然后应用:)

编辑在重写规则

目标(或替换字符串)被认为是一个文件路径,默认情况下。使用[PT]标志会导致它被视为一个URI。也就是说,使用[PT]标志会导致RewriteRule的结果通过URL映射传回,因此基于位置的映射(例如Alias,Redirect或ScriptAlias)可能有机会生效。

例如,如果您有一个用于/图标的别名,并且有一个RewriteRule指向那里,则应该使用[PT]标志来确保对别名进行评估。

here

+0

不幸的是我没有访问整个httpd.conf。所以我应该将重写规则从.htaccess文件移到httpd.conf中? – 0711master

+0

别名在httpd.conf中,并在.htaccess中重写?好的。或重写后的别名到htaccess中。 –

+0

在htaccess中不允许使用别名,当我将重写置于httpd.conf中时,所有域如子域都被处理。我试图把重写放在 ...但是没有效果:( – 0711master