Apache Rewrite用于模拟目录的新文档根目录

时间:2014-06-18 11:01:56

标签: apache .htaccess mod-rewrite

我目前正在使用目前不支持安装在子目录中的网络应用程序(Elastik)。由于我目前无法在服务器上创建子域,因此我想知道是否可以使用重写规则将从该目录引用的任何请求重定向回自身,因为所有链接文件都是相对于根目录。我尝试了一些事情,我认为这是我最接近的事情:

RewriteEngine on
RewriteBase /elastik/
RewriteCond %{REFERER} ^http://localhost/elastik/.*$
RewriteRule ^/(.*)$ $[1]

但这仍然无法奏效!任何人都可以帮助我指出正确的方向吗?

1 个答案:

答案 0 :(得分:1)

我已经用htaccess和php结合了这个。如果有其他人遇到这种情况,我会把它留在这里,我无法在互联网上找到任何帮助

首先,您需要将所有正常的网站文件移动到一个子目录中,我称之为#34; normal"为此,您的文件现在看起来像这样:

>public_html
    >normal
        >index.php
        >other
        >files
    >elastik
        >all
        >elastic
        >files

现在创建一个.htaccess文件,将所有内容重定向到public_html中的index.php文件,如下所示:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php [L]

然后,public_html目录中的index.php文件应如下所示:

<?php 
if(isset($_SERVER['HTTP_REFERER'])){
    if(strpos($_SERVER['HTTP_REFERER'], "localhost/elastik")){
    header("Location: /elastik".$_SERVER['REQUEST_URI']);
    }
    else{
    $uri = $_SERVER['REQUEST_URI'];
    header("Location: /normal".$uri);
    }
}
else{
    header("Location: /normal".$uri);
}
?>

我不得不移动我的php包含,它们在文档根目录中被引用,返回到public_html目录,但是在我这样做之后,其他一切运行顺利