Исключить папку / каталог из RewriteRule

У меня довольно стандартный WordPress .htaccess со следующим URL переписывает

# BEGIN WordPress 
<IfModule mod_rewrite.c>  
RewriteEngine On  
RewriteBase /  
RewriteRule ^index.php$ - [L]  
RewriteCond %{REQUEST_FILENAME} !-f  
RewriteCond %{REQUEST_FILENAME} !-d  
RewriteRule . /index.php [L]  
</IfModule> 
# END WordPress  

WordPress установлен в моем корневом домене. У меня есть некоторые другие скрипты в подпапках, например /opencart эти подпапки содержат свои собственные.htaccess файлы.

к сожалению, кажется, что WordPress захватывает перезаписи для некоторых из этих скриптов иногда.

Как я могу попросить mod_rewrite игнорировать правила WordPress для перезаписи при столкновении с конкретными подпапки, например opencart и использовать правила, определенные в.htaccess в этих подпапках вместо этого?

3 ответов


вы можете попробовать заменить полный набор правил WP следующим:

# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]

# Include in the next line all folders to exclude
RewriteCond %{REQUEST_URI}  !(folder1|folder2|folder3) [NC]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress 

в рамках .htaccess файл в корне вашего сайта, добавьте следующее выше WordPress .директивы htaccess:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} ^/subdirectoryname1/(.*)$ [OR]
RewriteCond %{REQUEST_URI} ^/subdirectoryname2/(.*)$ [OR]
RewriteRule ^.*$ - [L]
</IfModule>

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

RewriteRule ^/(folder1)/(.*) /folder1/ [R]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule . /index.php [L,R]

</IfModule>

# END WordPress