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

时间:2015-03-06 13:02:30

标签: php apache .htaccess mod-rewrite

我的htdocs文件夹上安装了一个需要重写的rewriterule,如下所示:

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]

1 个答案:

答案 0 :(得分:3)

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

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

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