从RewriteRule中排除文件夹/目录

OC2*_*2PS 7 wordpress .htaccess mod-rewrite

我有一个非常标准的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  
Run Code Online (Sandbox Code Playgroud)

WordPress安装在我的域根目录中.我在子文件夹中有一些其他脚本,例如/ opencart这些子文件夹包含自己的.htaccess文件.

不幸的是,似乎WordPress有时会劫持其中一些脚本的重写.

当遇到特定子文件夹(例如opencart)并使用这些子文件夹中的.htaccess中定义的规则时,如何让mod_rewrite忽略WordPress规则以重写?

Fel*_*a A 23

您可以尝试使用以下替换完整的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 
Run Code Online (Sandbox Code Playgroud)


小智 7

在站点根目录的.htaccess文件中,添加以下ABOVE WordPress .htaccess指令:

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