【问题标题】:Exclude a folder/directory from RewriteRule从 RewriteRule 中排除文件夹/目录
【发布时间】:2013-02-24 01:52:54
【问题描述】:

我有一个非常标准的 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 中定义的规则?

【问题讨论】:

    标签: wordpress .htaccess mod-rewrite


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:
      # BEGIN WordPress
      <IfModule mod_rewrite.c>
      RewriteEngine On
      RewriteBase /
      RewriteRule ^index\.php$ - [L]
      
      RewriteRule ^/(folder1)/(.*) /folder1/$2 [R]
      
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      
      RewriteRule . /index.php [L,R]
      
      </IfModule>
      
      # END WordPress
      

      【讨论】:

        【解决方案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 
        

        【讨论】:

        • 建议可能是正确的,但没有得到结果,因为 WordPress 不断覆盖 .htaccess,删除 RewriteCond %{REQUEST_URI} !(folder1|folder2|folder3) [NC] 这确实是建议的相关部分规则集。
        • 这是另一个问题,确实很奇怪,WP 通常只在安装时更新该文件。检查插件,也许有人正在这样做并禁用所有插件进行测试。还要检查wp-config 以确保没有像define('RELOCATE',true) 这样的行。如果是,请删除它。
        • 我会接受这个答案,尽管它对我不起作用。在我的情况下,问题原来是完全不同的东西,需要一种与我在问题中假设的方法截然不同的方法。
        猜你喜欢
        • 2011-01-20
        • 2023-04-03
        • 2012-03-04
        • 2015-11-06
        • 2022-09-26
        • 1970-01-01
        • 2014-12-17
        • 1970-01-01
        相关资源
        最近更新 更多