繁体   English   中英

如何调整.htaccess文件以允许子文件夹中具有完整功能的网站

[英]How do I adjust my .htaccess file to allow a full functional website in a subfolder

我有一个运行良好的网站。 我想在子文件夹而不是子域中创建另一个。 这样做的主要考虑因素是我需要为两个站点安装tls cert。 而且由于父网站使用tls cert,所以我希望覆盖孩子(我现在买不起)。 麻烦的是我在两个网站的每个网站都有.htaccess文件,如下所示:

Options -MultiViews
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php?url=$1 [L,QSA]

父网站仍在工作,但我无法访问“子”网站。

编辑:

尽管我认为路由不是问题,但我还是应要求将机制发布在这里

class App{

    protected $controller = 'welcome';
    protected $method = 'index';
    protected $params;

  public function __construct(){        
    $url = $this->parseURL();

    if( isset( $url[0] ) && file_exists( 'app/controllers/' . strtolower( $url[0] ) . '.php' ) )
    {
        $this->controller = $url[0];
        unset( $url[0]);
    }

    require_once 'app/controllers/' . strtolower( $this->controller ). '.php';

    $this->controller = new $this->controller;

    if( isset( $url[1] ) )
    {
        if( method_exists( $this->controller, $url[1] ) )
        {
            $this->method = $url[1];
            unset( $url[1] );
        }
    }

    $this->params = $url ? array_values( $url ) : [];

    call_user_func_array( [ $this->controller, $this->method ], $this->params );
}

 protected function parseURL(){

    if( isset( $_GET['url'] ) ){

        //return $url = explode( '/', filter_var( rtrim( $_GET['url'], '/') ), FILTER_SANITIZE_URL );
        return $url = explode( '/', filter_var( rtrim( $_GET['url'], '/' ), FILTER_SANITIZE_URL ) );
    }
  }
}

这是基本控制器类:

abstract class Controller{

    protected $response = array();

    protected $dbInstance = false;

   protected function model( $model ){
    require_once 'app/models/' . strtolower( $model ) . '.php';
    return new $model();
  }

   protected function view( $view, $data = [] ){

    require_once 'app/views/' . strtolower( $view ) . '.php';
  }
}

因此,您需要从.htaccess排除一个子文件夹,因为您有一个子域,要实现此目的,只需排除directory1directory2 (例如ex):

Options -MultiViews
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !^/?(directory1|directory2)/ !-d

RewriteRule ^(.*)$ index.php?url=$1 [L,QSA]

PS:未经测试,但可以正常工作

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM