【问题标题】:htaccess stop processing if given directory如果给定目录,htaccess 停止处理
【发布时间】:2021-11-02 21:04:03
【问题描述】:

我在我的 htdocs 文件夹上安装了一个需要像这样处理重写器的文件夹:

RewriteEngine On
RewriteCond %{ENV:REDIRECT_STATUS} ^$

RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ 
RewriteCond %{REQUEST_URI} !^/admin? 
RewriteCond %{REQUEST_URI} !^/payment? 
RewriteRule ^(.*)$ %1/$1 [QSA]

RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$
RewriteRule ^admin/(.*)?$ BACKEND-PHP/$1?domain=%1 [QSA]

RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$
RewriteRule ^payment/(.*)?$ PAYPAL-API/$1?domain=%1 [QSA]

但是现在,要测试 joomla,我需要在 htaccess 文件中添加一些规则,如果给定目录是“localhost/joomla”,则停止处理规则,以便 joomla 正常工作。

在伪代码中会是这样的:

RewriteEngine On
RewriteCond %{ENV:REDIRECT_STATUS} ^$

**RewriteCond %{HTTP_HOST} ^(localhost)$ 
**RewriteRule ^/joomla$ [END]

# (if the requested file is at joomla directory 
# htaccess will stop processing)

RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ 
RewriteCond %{REQUEST_URI} !^/admin? 
RewriteCond %{REQUEST_URI} !^/payment? 
RewriteRule ^(.*)$ %1/$1 [QSA]

RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$
RewriteRule ^admin/(.*)?$ BACKEND-PHP/$1?domain=%1 [QSA]

RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$
RewriteRule ^payment/(.*)?$ PAYPAL-API/$1?domain=%1 [QSA]

【问题讨论】:

    标签: php apache .htaccess mod-rewrite


    【解决方案1】:

    你很亲密。只需将您的规则修改为

    RewriteCond %{HTTP_HOST} ^localhost$ [NC]
    RewriteRule ^joomla(/.*)?$ - [END]
    

    - 表示我们不对这个 URL 进行任何处理。 [End] 标志可防止触发以下所有规则。

    【讨论】:

      【解决方案2】:

      你可以在子目录中使用这个:

      RewriteEngine off
      

      【讨论】:

        猜你喜欢
        • 2012-05-13
        • 2016-03-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-26
        • 2012-11-07
        • 1970-01-01
        • 2021-04-20
        相关资源
        最近更新 更多