Я использую приведенные ниже правила htaccess в корневой папке моего сайта, чтобы удалить расширения файлов и добавить косую черту в конце. Однако я хотел бы исключить подкаталог / sub-dir / из правил htaccess для корневой папки. Я попытался добавить другой htaccess в папку / sub-dir / и поставил RewriteOptions inherit
или же RewriteEngine Off
в файле, но ни один из них не работает.
RewriteEngine On
RewriteBase /
# redirect from non-www to www
RewriteCond %{HTTP_HOST} ^mywebsite.com.au$ [NC]
RewriteRule ^(.*)$ http://www.mywebsite.com.au/$1 [R=301,L]
RewriteCond %{REQUEST_URI} ^/index.php$
RewriteRule ^(.*)index.php$ http://www.mywebsite.com.au/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{THE_REQUEST} ^GET\ /[^?\s]+\.php
RewriteRule (.*)\.php$ /$1/ [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*)/$ $1.php [L]
# Remove trailing slash:
RewriteRule (.*)/$ $1 [L]
# Now test without the trailing slash:
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule . %{REQUEST_FILENAME}.php [QSA,L]
Любое предложение высоко ценится.
Спасибо
Вы можете попробовать добавить файл htaccess в подкаталог, который имеет только этот:
RewriteEngine On
RewriteRule ^ - [L]
Без каких-либо вариантов наследования. Наследование означает, что вы хотите, чтобы правила в родительском htaccess также применялись вместе с любыми правилами в файле htaccess подкаталога. При этом вы убедитесь, что механизм перезаписи включен, и создаете правило «ничего не делать».
В противном случае вы можете добавить проход в верхнюю часть корневого файла htaccess (справа внизу). RewriteBase
):
RewriteRule ^sub-dir/ - [L]
Других решений пока нет …