![](/img/trans.png)
[英]how can I allow an optional backslash on urls with .htaccess file and not let browsers think I am accessing a subfolder?
[英]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
排除一个子文件夹,因为您有一个子域,要实现此目的,只需排除directory1
和directory2
(例如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.