为什么子文件夹中的htaccess规则会阻止父htaccess规则起作用?

时间:2019-05-13 22:08:22

标签: apache .htaccess

我具有以下目录结构

.htaccess
subfolder
  .htaccess
  file.php

/。htaccess包含强制在整个站点上使用ssl的规则。 /subfolder/.htaccess包含允许访问不带扩展名的php文件的规则。除非一起使用,否则这两个规则均有效。如果我访问http://example.com/subfolder/file,它将正确加载file.php,但不会重定向到https。我需要更改.htaccess文件中的哪些内容才能使两个规则一起工作?

这对我来说是意外行为,因为如果我正确理解,子文件夹中的htaccess将在父文件夹中的htaccess之前运行。但是,如果我将force-ssl规则粘贴在subfolder / .htaccess的末尾,则它会按预期工作。是什么导致这种行为差异?

/。htaccess

RewriteEngine On
RewriteBase /

# force https
RewriteCond %{HTTP:X-Forwarded-SSL} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=302]

/subfolder/.htaccess

RewriteEngine On
RewriteBase /subfolder/

# Remove .php extension
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [QSA]

0 个答案:

没有答案