我具有以下目录结构
.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]