2017-05-31 15 views
0

まず、スタックオーバーフローに関する私の最初の投稿であることをお知らせしたいと思います。何か間違っていると私に知らせたいと思います。URLからサブフォルダを隠す

私はコントローラとテンプレートのようなフォルダを含むPHPスクリプトを構築しようとしています。どちらもリダイレクトされており、その中にphpファイルが含まれていなければなりません。すべてがルートドメインディレクトリのインデックスからアクセス可能です。だから私の質問は、どのようにURLから隠すことができるかです。すなわち、domain.com/"controller"/activate.phpまたはdomain.com/"templates"/login.phpです。

私はlogin.phpを "templates"フォルダの中にインクルードすると、indexのいくつかのパラメータ(if)にインクルードしていることをお知らせします。

.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テキスト/テキストテキスト/ HTMLテキスト/プレーンテキスト/ XMLテキスト/ CSSのアプリケーション/ X-javascriptのアプリケーション/ javascriptの

今、私の.htaccessは、そのパラメータを持ってまで、 urlとcache-Gzip圧縮方式で.php拡張子を隠します。すべての助けがそれを感謝し、間違って、正しいでしょう!

答えて

0

もし私が間違っていないなら、basepath/ControllerName/Methodのようなものがあり、ControllerName部分を隠したいのですか?

:URL/friendlyurlで再生すると、ちょうどあなたが簡単な「ルーティング」の設定でやりたいことができ

<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] 

のような比較的基本的なhtaccessファイルを保つためにMVCを使用して、私の意見では 、たとえば:

ルーティングクラスは、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 hosting: ** ** assets **(js、css、img、within foldersを含むフォルダ) **コントローラ**(フォルダ内のクラス、関数、およびdb接続を含むphpファイルを含むフォルダそれらのドメインをチェックするphpファイルを含むフォルダ**テンプレート**(ログイン、アクティベーションなどのPHPファイルを含むフォルダ)** ** languages ** **。htaccess **(上記の特定のコードを含むファイル) **インデックス**(テンプレートフォルダ内にあるログインphpファイルを含むPHPファイル) ' –

+0

login.phpとprofil.phpを呼び出します(ステートメントがtrueの場合)。したがって、URLが最初にdomain.comを表示し、そのステートメントが真であれば、profilにリダイレクトされ、urlはdomain.com/templates/profil.phpで変更されます。だから、私はページを "正しく"呼び出して表示する方法の2つの方法の真ん中にいる: 1).htaccessを使って、サブフォルダを気にして隠す。 2)関数とクラスを含むphpファイルを使用して、コントローラのフォルダにあるすべてのインデックスを表示します。ページが含まれていても構いません。domain.com/something.php –

関連する問題