1

私は次の構造を持つテンプレートベースのCMSを開発しています。

/public_html/admin/

^すべてのCMSファイルと関数などが含まれています。

/public_html/user_html/

^は、クライアントがFTPでアクセスし、すべてのクライアント側ファイル(html、javascript、css、jpg、pngなど)を管理するディレクトリですが、サーバー側ファイル(phpなど)を追加する権限は許可されていません。

/public_html/index.php

^はサイト/アプリケーション自体を駆動するルートパブリックディレクトリであり、index.phpはこのディレクトリ内の唯一のファイルであり、URI要求を処理してアプリケーションを実行します。

システムと構造についてもう少し詳しく説明します。システム内のすべてのhtmlファイルがシステムの特定のモジュールのテンプレート/レイアウトとして機能するように設定されていますuser_html。これらのファイルにはシステム機能を出力するカスタムタグがあり、サーバーはからすべてのファイルとフォルダーを読み取ります。user_html要求されたときに、それらをアプリケーションに出力します。

これはすべて問題なく、おやつを実行します。ここで達成しようとしているのはuser_html、すべてのURLブラウザー要求のを非表示にすることです。したがって、基本的に、htmlページ内のすべてのパスは、現在、次のように読み取る必要があります。

src="/user_html/js/scripts.js",
src="/user_html/css/styles.css"
src="/user_html/images/logo.png"

一方、htmlページを作成および編集するときにユーザー/クライアントが入力する必要のあるパスは次のようになります。

src="/js/scripts.js"
src="/css/styles.css"
src="/images/logo.png"

クライアントはディレクトリとuser_htmlディレクトリ内のファイルを完全に制御できるため、すべてのファイルパスが永久に変更されます。基本的に、ブラウザはすべてのファイルとこれらのファイルが存在するディレクトリを認識している必要がありますがuser_html、それらがに存在するかのように表示されますpublic_html

誰かがhtaccessを使用して、.phpファイルと/admin/ディレクトリを除くすべてのURIリクエストをルーティングする簡単な答えがある場合user_html、または他の考えやアイデアがあれば、それは大いにありがたいです。

私は広範囲にわたって検索しましたが、私が求めているものの解決策を見つけることができません。ただし、これは非常に単純なRewriteConditionとRewriteRuleになると確信しています。

4

1 に答える 1

1

はい、それは単なる書き換えルールです!

「js/foo.js」形式の URL を受け入れることができる場合は、public_html に .htaccess ファイルが必要です。

# everything that's not .php or in /admin goes to user_html.
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !^(.+)\.php$
RewriteCond %{REQUEST_FILENAME} !^/admin(.+)$
RewriteRule ^(.+)$ /user_html/$1 [NC]
于 2012-12-10T01:01:03.907 に答える