【问题标题】:Htaccess rule to ignore folder only if it's NOT a specific hostHtaccess 规则仅在它不是特定主机时才忽略文件夹
【发布时间】:2014-11-04 03:55:08
【问题描述】:

需要一些关于我的 Apache .htaccess 规则的指导。对您的向导来说应该是一个不错的简单方法:)

基本上设置是这样的:

  • 根域用于访问我们的前端站点(管理员和销售),该站点始终通过我们的根域使用www,并从我们的应用程序加载。
  • 我们在 /blog 上设置了 Wordpress,这将始终并且应该只加载到我们主根域的 www 子域上。
  • 我们允许用户页面使用通配符子域和自定义域,因此基本上任何 *.domain.comusersdomain.com 都会通过 Codeigniter 路由,以便为用户显示正确的页面。
  • 我们需要让/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 或 Condition 说明

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

供参考

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

【问题讨论】:

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


    【解决方案1】:

    我将以下内容添加到 /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 文件,这并不理想,但它可以工作,而且它不是应用程序的主要功能。

    【讨论】:

      猜你喜欢
      • 2014-05-18
      • 1970-01-01
      • 2020-06-19
      • 1970-01-01
      • 1970-01-01
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      • 2014-04-03
      相关资源
      最近更新 更多