【问题标题】:.htaccess overwrites parent .htaccess.htaccess 覆盖父 .htaccess
【发布时间】:2012-07-09 05:20:47
【问题描述】:

所以我已经为此苦苦挣扎了一整天,到目前为止没有任何帮助。 我在域的根目录中安装了 PyroCMS,在同一文件夹 (public_html) 中安装了子域博客。

现在的问题是,当我访问 http://dev.iber.co.uk/blog/ 时,我看到的是 blog.iber.co.uk。显然那是因为 blog 文件夹是存在的,而不仅仅是 htaccess 重写的 url。

文件夹结构:

public_html
   blog
      .htaccess
      .index.php
      etc..
   .htaccess
   index.php
   etc..

但是,如果我从博客文件夹 dev.iber.co.uk/blog/ 中删除 htaccess,它会被重写为 index.php。

这里是 dev.iber.co.uk 的 .htaccess(这个子域实际上指向根 public_html 文件夹):

Options +FollowSymLinks -Indexes
RewriteEngine on
RewriteBase /

RedirectMatch 403 ^/(system\/cms\/cache|system\/codeigniter|\.git|\.hg).*$

RewriteCond %{HTTP_HOST} !^blog\.iber\.co\.uk [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L]

这是来自 wordpress 博客的 .htaccess:

Options +FollowSymLinks -Indexes
RewriteEngine on
RewriteCond %{HTTP_HOST} ^blog\.iber\.co\.uk [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L]

我做错了什么?我无权重写日志,因为它是共享服务器。任何帮助我解决问题的人,我都会给予 50 个代表。

谢谢

【问题讨论】:

  • 为什么 blog/.index.php 是点前缀的?首先读取父文件夹 htaccess,因此使用 [L] 完成的任何重写匹配都将是最后一次重写。您可能希望在域之间进行重定向 - 如果将 url 作为路径 /blog/ 输入,则发送到博客。带有重定向的子域不重写
  • 你去dev.iber.co.uk/blog时希望看到什么?
  • 我希望看到属于 dev.iber.co.uk 的博客的页面 - 它与 blog.iber.co.uk 无关
  • 这是一个简单的页面,应该在 dev.iber.co.uk 中重写为 index.php
  • 您是否可以控制虚拟主机的 DocumentRoot -“共享服务器”,所以我猜没有?如果我错了,请纠正我,dev../blog 与目录中的文件对象无关,它只是直接视图/模型的替代 url 模式吗?

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


【解决方案1】:

在父 htaccess 中,这会解决您的情况吗?或者您是否需要从 dev.domain 访问 /blog/ 路径? p>

RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST}     ^dev.iber.co.uk$     [NC]
RewriteCond %{REQUEST_URI}   ^/blog/              [NC]
RewriteRule ^/blog/(.*)$     blog.iber.co.uk/$1   [R=302.L]
... other rules

【讨论】:

    猜你喜欢
    • 2013-10-14
    • 1970-01-01
    • 2013-05-06
    • 2016-10-29
    • 1970-01-01
    • 2014-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多