【问题标题】:htaccess to exclude a specific directoryhtaccess 排除特定目录
【发布时间】:2023-04-02 07:18:01
【问题描述】:

我的网站根目录有一个 htaccess,如下所示:

RewriteEngine On

RewriteRule \.php$ - [L,NC]

RewriteRule ^(?:favicon\.ico|(?:index|custom500|custom404)\.html)$ - [L,NC]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .+ index.php?source=$0 [L,QSA]

我希望它忽略那些包含特定文件夹 folder1 的 URL。网址将类似于:

https://mycooldomain.com/folder1/api/rest/... //something else here

我检查了this question,但似乎无法将其应用于我的情况。

【问题讨论】:

    标签: .htaccess mod-rewrite apache2.4


    【解决方案1】:

    像这样:

    RewriteEngine On
    
    # ignore request URLs that start with /folder1/
    RewriteCond %{THE_REQUEST} \s/+folder1/ [NC]
    RewriteRule ^ - [L]
    
    RewriteRule \.php$ - [L,NC]
    
    RewriteRule ^(?:favicon\.ico|(?:index|custom500|custom404)\.html)$ - [L,NC]
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule .+ index.php?source=$0 [L,QSA]
    

    【讨论】:

      【解决方案2】:

      @anubhava 的答案的替代方案... 需要 在您的.htaccess 文件中被忽略的唯一规则是最后一条。因此,您可以在最后一条规则中添加一个条件,以排除以 /folder1/ 开头的 URL 路径。

      例如:

      RewriteCond %{REQUEST_URI} !^/folder1/
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteRule .+ index.php?source=$0 [L,QSA]
      

      !^/folder1/ 上的 ! 前缀否定了正则表达式,所以它在 not 匹配时是成功的。 IE。当 URL 路径/folder1/ 开头时。

      【讨论】:

        猜你喜欢
        • 2022-11-27
        • 2015-07-31
        • 1970-01-01
        • 1970-01-01
        • 2016-08-15
        • 2018-04-26
        • 2015-12-11
        • 1970-01-01
        • 2022-01-04
        相关资源
        最近更新 更多