我有两个单独的.htaccess文件,我希望将它们融合在一起,以便第一次重写始终优先,将某些流量重定向到https base哪个域。然后,如果url上的文件不存在,那么它将流量发送到php文件。它是一个url shortener,但是如果它返回404,那么它会显示404错误页面。
以下是.htaccess文件的各个部分:
下面,我认为应该将除kore.tt和korett.com之外的所有http流量重定向到https:
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} !^(www\.)?(kore\.tt|korett\.com) [NC]
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [NE,L,R=301]
这是来自url shortener的东西,它应该将不存在的流量发送到loader.php
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ /loader.php [L]
</IfModule>
但是如果那样会返回404错误。然后这是简单的404错误捕获。
ErrorDocument 404 /404.html
答案 0 :(得分:0)
您可以在htaccess中使用条件。还有很多方法可以创建规则。看看这是否适合您。
#check to see if loader.php exists on the filesystem, then do rewrite
<If "-f %{DOCUMENT_ROOT} . '/loader.php'">
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ /loader.php [L]
</If>
#otherwise redirect to 404 page
<Else>
RewriteEngine On
RewriteRule ^ /404.html [R=404,L]
</Else>