2012-02-07 5 views
0

私はこのプロジェクトをWebサーバーのルートからローカルに実行しています。それは私の学校のサーバーに配備されるので、私はそれをサブフォルダに入れる必要があるという学校プロジェクトです。これは、静的+ CSSのリダイレクトで問題を引き起こしています。なぜなら、サブフォルダから実行したときには今書かれているようには動作しませんし、すべてのリライトルールをサブフォルダにハードコードしたくないからです。必要ならrootからの実行に切り替えるのが難しくなります。ルートとサブフォルダから動作するRewriteRuleのdir-hardcodingを最小限に抑えるアプローチ

プロジェクトの.htaccessに次の規則があります。

Options +FollowSymlinks 
RewriteEngine On 

RewriteCond %{THE_REQUEST} ^GET\ /static/ 
RewriteRule ^static/(.*) /$1 [L,R=301] 
RewriteCond %{THE_REQUEST} ^GET\ /css/ 
RewriteRule ^css/(.*)$ static/css/$1 [L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php/$1 [L] 

私は上記の書き換えがルートとサブフォルダの両方から頼ま何質問、または最小限の違いがように動作しないことを得ることができますアプローチはありますか? (私はすべてのルールにサブフォルダをハードコーディングする必要はありませんどこ)

答えて

1

私はそれを参照してください方法は、(.haccessと仮定すると、サブフォルダにもあります)

Options +FollowSymlinks 
RewriteEngine On 

#you might need a rewritebase, but not necessarily 
#testing 
#RewriteBase/
#production 
#RewriteBase /subfolder 

#less strict condition. will only be a problem if there is another folder also named 'static' inside 'static' :-) 
RewriteCond %{THE_REQUEST} /static/ 
RewriteRule ^static/(.*) $1 [L,R=301] 

#condition here is not needed 
RewriteRule ^css/(.*)$ static/css/$1 [L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php/$1 [L] 
+0

これは完全に働いて、そしてさらに良くされています。 RewriteBaseを省略すると、ルートに展開するか、単独でサブフォルダにデプロイするかの両方で動作します。解決していただきありがとうございます。 – chrisbuchholz

関連する問題