URLとパスを変更するために書き換えルールが面白いです。ここでいくつかの例。 私は、Apache conf内の1つのVirtualHost through ServerAliasを参照するいくつかのホスト名を持っています。
example.com
anotherdomain.com
same.org
そしてanothersドメインがたくさん。ここでは、私がやりたいこと:別のドメインを持つ
動的ホスト名による書き換えルール
example.com/uploads/photo.png -> /www/example.com/uploads/example.com/photo.png<br />
anotherdomain.com/uploads/photo.png -> /www/anotherdomain.com/uploads/anotherdomain.com/photo.png<br />
と同じこと。私がすでに作ったこの事。
RewriteCond %{HTTP_HOST} ^(www\.)?(.*)$
RewriteRule ^uploads/([a-zA-Z0-9-\._]+)$ uploads/%2/$1 [L]
これは完全に機能します。しかし、私がアップロード/アイコン/カテゴリ/ image.png
にアクセスしようとした場合、私は500内部Apacheのエラーを見始める... 私はこれにルールを変更しました:
RewriteCond %{REQUEST_URI} !^/uploads/%{HTTP_HOST}
RewriteCond %{HTTP_HOST} ^(www\.)?(.*)$
RewriteRule ^uploads/([a-zA-Z0-9-\._/]+)$ uploads/%2/$1 [L]
とApacheのリライトログを有効にします9冗長で
RewriteCond: input='/uploads/icons/category/image.png' pattern='!^/uploads/%{HTTP_HOST}' => matched
rewrite 'uploads/icons/category/image.png' -> 'uploads/example.com/icons/category/image.png'
RewriteCond: input='/uploads/example.com/icons/category/image.png' pattern='!^/uploads/%{HTTP_HOST}' => matched
rewrite 'uploads/example.com/icons/category/image.png' -> 'uploads/example.com/example.com/icons/category/image.png'
その後、それはだ
は=(
10回のルックアップを使い果たす私はこの
RewriteCond %{REQUEST_URI} !^/uploads/example.com
RewriteCond %{HTTP_HOST} ^(www\.)?(.*)$
RewriteRule ^uploads/([a-zA-Z0-9-\._/]+)$ uploads/%2/$1 [L]
それの作品は、すべてのもののためにperfectleが、わずか1つのドメイン用に変更する場合:example.com
私は別の解決法を見つけましたが、完璧ではありません。
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{HTTP_HOST} ^(www\.)?(.*)$
RewriteRule ^uploads/([a-zA-Z0-9-\._/]+)$ uploads/%2/$1 [L]
このルールは、dirおよびfileが存在する場合にのみ機能します。しかし、私がアクセスしようとした場合:
/uploads/images/not-existed-404.nothing
- >このファイルが存在し、に書き換えていないので、それは500を返す:
/uploads/example.com/example.com/example.com/example.com.......
P.S.私の悪い英語のため申し訳ありません;)
非常に大きな感謝を!すべて正常に動作します! – libbkmz