2017-05-31 149 views
0

首先,我想告诉你这是我的第一篇关于堆栈溢出的文章,所以如果我做错了,我也想让我知道它。从url隐藏子文件夹

我想构建一个包含控制器和模板文件夹的PHP脚本。两者都重定向和包含 - 要求PHP文件在其中的一个或另一个。所有内容都可以通过根域目录上的索引访问。所以我的问题是我怎么能隐藏的网址,即domain.com/"controller"/activate.phpdomain.com/"templates"/login.php

我让你知道,我通过索引中的某些参数(if)在“模板”文件夹中包含login.php

我现在将发布我的.htaccess,以便您可以查看该过程,而我已经尝试过去隐藏“模板”文件夹。但是,然后通过在.htaccess上编码,子目录不再可用。这就是为什么我不得不删除代码在这里发布,因为这些代码不解决我的情况。

<IfModule mod_rewrite.c> 

    RewriteEngine on 
    RewriteBase/

    ErrorDocument 404 /templates/404 

    # To externally redirect /dir/abc.php to /dir/abc 
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(.+?)\.php[\s?] [NC] 
    RewriteRule^/%1 [R=301,L,NE] 

    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME}.php -f 
    RewriteRule ^(.+?)/?$ $1.php [QSA,NC,L] 


</IfModule> 

AddOutputFilterByType DEFLATE文本/文本的text/html文本/纯文本/ XML文本/ CSS应用程序/ x-JavaScript应用/ JavaScript的

直到现在我的.htaccess有参数在url和cache-Gzip压缩方法上隐藏.php扩展名。所有的帮助将感激,错误和正确的!

回答

0

所以如果我没有错,你有类似basepath/ControllerName/Method的东西,你想隐藏ControllerName部分? 在我看来,使用MVC与URL/friendlyurl玩,只是保持一个相对基本的htaccess像

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase /smw/ 


# Allow any files or directories that exist to be displayed directly 
RewriteCond %{REQUEST_FILENAME} !-f 
#RewriteCond %{REQUEST_FILENAME} !-d 

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

你可以做你想做一个简单的“路由”的配置是什么:

例如:

路由类来获取URL和重定向

 public function __construct(){ 
    $uri = $_SERVER["REQUEST_URI"]; 
    $uri = preg_replace("#".BASE_PATH_PATTERN."#i", "", $uri, 1); 
    $this->uriExploded = explode("/", trim($uri, "/") ); 
    /*Check if there is another folder */ 
    $check = preg_match("/something/i", $uri); 
    if($check != false) 
    { 
     /*instruction... */ 
    } 

希望它是帮助!告诉我你是否需要更多信息

+0

这不完全是我的意思。为了帮助你更多,我将给你提供文件夹的细节以及它的工作原理。所以: –

+0

根域目录httpd主机: **资产**(包含js,css,img,文件夹内的文件夹) **控制器**(包含具有类,函数和db连接的php文件的文件夹他们) **语言**(包含php文件的文件夹,它检查区域和决定哪个php文件读取词汇表数组) **模板**(包含php文件的文件夹,如登录,激活等) **。htaccess **(包含您在上面看到的特定代码的文件) ** index **(包含登录php文件的php文件,位于模板文件夹内)' –

+0

假设我们有索引调用login.php和profil.php(如果语句正确)。因此,网址将首先显示domain.com,然后如果该语句为true,则会重定向到profil,url将在domain.com/templates/profil.php中更改。所以我在两个方法的中间如何调用和正确显示页面: 1)使用.htaccess以某种方式照顾并隐藏子文件夹。 2)通过在控制器文件夹中使用带有函数和类的php文件,在索引中显示所有内容,如果语句正确并且url为domain.com/something.php –