Htaccess规则仅在文件夹不是特定主机时才忽略该文件夹

时间:2014-10-30 02:34:12

标签: apache .htaccess mod-rewrite url-rewriting

需要我的Apache .htaccess规则的一些指导。对你来说应该是一个很好的简单的向导:)

基本上设置如下:

  • 根域用于访问我们的前端网站(管理和销售),该网站始终通过我们的根域使用www,并从我们的应用程序加载。
  • 我们在/ blog上安装了Wordpress,这将始终只应加载到我们主根域的www子域中。
  • 我们允许用户页面使用通配符子域和自定义域,因此基本上通过Codeigniter路由任何*.domain.comusersdomain.com以显示用户的正确页面。
  • 我们需要让/blog/用于通配符域和子域,以便在用户页面上加载/blog/页面,这样他们就可以拥有自己的博客。换一种说法。任何非www.domain.com主机都应绕过/blog Wordpress安装并路由到我们的应用程序,以从应用程序加载正确的非wordpress页面。

现在,如果您访问usersdomain.com/blog/userssubdomain.domain.com,则会加载Wordpress安装,这不是理想的行为。

这是我们目前的htaccess:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^domain\.com$ [NC]
RewriteRule  ^(.*)$ http://www.domain.com/$1 [R=301,L]
RewriteCond $1 !^blog
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]

有没有人有任何想法如何实现上述目标?基本上需要一个RewriteRule或条件

  

"如果请求主机不是www.domain.com,则忽略/blog目录和   发送至index.php"

供参考

我正在考虑这个问题,但没有运气:https://stackoverflow.com/questions/12502885/how-to-exclude-all-files-and-directories-except-one-directory-rewritecond

1 个答案:

答案 0 :(得分:1)

我将以下内容添加到my / blog /目录中的.htaccess中以解决此问题。

#rewrite back to root index if not local dev or live main host
RewriteCond %{HTTP_HOST} !^www\.domain\.com [NC]
RewriteCond %{HTTP_HOST} !^dev\.local\.domain\.com [NC]
RewriteRule .* /index.php/$0 [PT,L]

回退当然是必须为此类别中的每个请求读取2个htaccess文件,这不是理想的但是它有效并且它不是应用程序的主要功能。