如果给定目录,htaccess 停止处理

htaccess stop processing if given directory

我的 htdocs 文件夹中有一个安装需要像这样处理重写规则:

RewriteEngine On
RewriteCond %{ENV:REDIRECT_STATUS} ^$

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

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

RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$
RewriteRule ^payment/(.*)?$ PAYPAL-API/?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/ [QSA]

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

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

你很接近。只需将您的规则修改为

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

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

您可以在子目录中使用它:

RewriteEngine off