2012-01-09 7 views
0

私は、/ publicにあるimages/css/javascriptを除いて、index.phpで私のウェブサイトのすべての点を取得する最良の方法を見つけようとしています。/publicに画像をmod_rewriteする最良の方法

これらは私の.htaccessで試した2つのセクションの方法ですが、これらのいずれかを改善するための優れた方法や方法があるかどうかを知りたいと思います。

また、これらのうちどれがサーバー上で優れているかわかりません(オーバーヘッドが少ない)。

RewriteEngine on 

RewriteBase /subfolder/ 
RewriteRule !\.(js|ico|txt|gif|jpg|png|css|pdf)$ index.php 
RewriteRule ^.*/public/(.*)$ /subfolder/public/$1 

#RewriteBase /subfolder 
#RewriteCond %{REQUEST_URI} ^(?!/public/).+ [NC] 
#RewriteRule !\.(js|ico|txt|gif|jpg|png|css|pdf)$ index.php [L] 

これを行うにはどのような方法をお勧めしますか?

答えて

0

非資源要求のすべてのファイルを対応せず、きれいな「仮想」URLですその後、最良の方法は、

#only if it is a request for a file that does not exist 
#i.e exlcude resources css etc 
RewriteCond %{REQUEST_FILENAME} !-f 
#send it to index.php 
RewriteRule .* index.php [L] 

#send image requests to subfolder public 
#if you can modify original resource urls to point to subfolder, this will not be necessary 
RewriteRule /public/(.*)$ /subfolder/public/$1 [L] 
1

ここで私は自分自身のフレームワーク(「STATIC」環境のために何をやったかだ場合には「

# if the site is static (i.e. xx.static.mydomain.com) 
RewriteCond %{ENV:STATIC} 1 
# Try to assign the extension into an EXT variable: 
RewriteRule (.*)(\.(css|js|htc|pdf|jpg|jpeg|gif|png|ico)){1}$ $1$2 [NC,QSA,E=EXT:$3] 
# (!) if it's an image... 
RewriteCond %{ENV:EXT} (jpg|jpeg|gif|png|ico) [NC] 
# ...no matter the extension, change it to 'img' : 
RewriteRule (.*) - [QSA,E=EXT:img] 

# if it's static... 
RewriteCond %{ENV:STATIC} 1 
# ...and its extension is not empty: 
RewriteCond %{ENV:EXT} !^$ 
# ...and the filename exists in the good dir, i.e. : 
# /web/htdocs/mydomain/css/xx.css 
# /web/htdocs/mydomain/js/yy.js 
# /web/htdocs/mydomain/img/aa.jpg 
# /web/htdocs/mydomain/img/bb.gif 
# and so on... 
RewriteCond %{DOCUMENT_ROOT}/%{ENV:EXT}%{REQUEST_FILENAME} -f 
# file exists => override filename and stop: 
RewriteRule ^(.+) %{DOCUMENT_ROOT}/%{ENV:EXT}%{REQUEST_FILENAME} [QSA,L] 

あなたは非常に素晴らしい組織を行うことができます。この方法で、それが来るとき1を取得するには:変数は、私は今のところ、あまりにも複雑である「ハード」の部分)を削除しましたので、計算するのは非常に複雑であり、静的な "ファイルの場合、上記のルールを最初に置くと、正しくフィルタリングされ、index.phpにリダイレクトされません。

このように、私のディレクトリ構造は、(非常にきれいであると思う)、このようになります、そして、あなたは簡単に同じことを行うことができます:

/web/htdocs/ 
    |-- css 
    |-- js 
    |-- img 
    | `-- prettyPhoto 
    |  |-- ... 
    |  `-- light_square 
    |-- js 
    | `-- openid 
    `-- htm 
関連する問題