我正在尝试在我的.htaccess
中编写一个重写规则,将除一个域之外的所有流量重定向到https。然后,如果它正在尝试去的文件不存在,则运行后面的最后一个块,转到loader.php
,但是如果文件存在,请转到该文件。htaccess重写规则,如果文件存在,否则转到PHP文件
这里是我到目前为止迭代之一:
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} !^(www\.)?(korle\.tt) [NC]
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [NE,L,R=301]
<If "-f %{DOCUMENT_ROOT} . '/'">
RewriteEngine On
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ /loader.php [L]
</If>
<Else>
RewriteEngine On
RewriteRule^/404.html [R=404,L]
</Else>
我所试图做的,如果用户去korlett.org
或korlett.net
或korelett.com
或内的任何文件,它重定向到https://
。但不是http://korle.tt
或指向此目录的其他域(现在未指定),它们将保留HTTP。
然后在此之后,如果该文件不存在,或者如果该URL返回一个404,然后运行这个命令:
RewriteEngine On
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ /loader.php [L]
什么是
tadman
@tadman我这么认为,但有人建议我这样做来检查文件是否返回404 /未找到。但是,当我尝试验证文件时,它说这不是有效的语法(在If)。所以我想这不重要,如果它的作品。有什么建议么? – wordSmith
'RewriteCond'指令本身就是一种'if'。其他的东西就在这里。 – tadman