0

この状況を説明する方法がよくわかりませんが、試してみます。だから、私はこのURLを持っています: http://localhost/static/some_picture.png、私のフォルダは次のようになります:

  • statics/x/picture.png
  • statics/y/logo.png

私が望むのは、ユーザーが前述の URL を入力すると、「statics/x/picture.png」にある「picture.png」が表示されますが、http://localhost/static/some_logo と入力すると表示されることです。 pngの場合、「statics/y/logo.png」に「logo.png」が表示されます。

私の最後の試み:

RewriteEngine On
RewriteCond statics/x/$1 -f
RewriteRule ^static/some_(.*)$ statics/x/$1  [L]

RewriteEngine On
RewriteCond statics/y/$1 -f
RewriteRule ^static/some_(.*)$ statics/y/$1  [L]

現在、私はこの.htaccessを持っています:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule %{REQUEST_FILENAME} ^static/some_(.*)$
RewriteCond %{DOCUMENT_ROOT}/statics/x/%1 -f
RewriteRule ^static/some_(.*)$ statics/x/$1  [L]

RewriteEngine On
RewriteRule %{REQUEST_FILENAME} ^static/some_(.*)$
RewriteCond %{DOCUMENT_ROOT}/statics/y/%1 -f
RewriteRule ^static/some_(.*)$ statics/y/$1  [L]

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule> 
4

2 に答える 2

0

あなたは正しい道を進んでいますが、あなたの-f状態は正しくありません。

試す:

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/static/some_(.*)$
RewriteCond %{DOCUMENT_ROOT}/statics/x/%1 -f
RewriteRule ^ /statics/x/%1  [L]

RewriteCond %{REQUEST_URI} ^/static/some_(.*)$
RewriteCond %{DOCUMENT_ROOT}/statics/y/%1 -f
RewriteRule ^ /statics/y/%1  [L]
于 2012-09-26T09:02:39.113 に答える
0

次のことを試すことができます。

RewriteEngine On
RewriteRule %{REQUEST_FILENAME} ^static/some_(.*)$
RewriteCond %{DOCUMENT_ROOT}/statics/x/%1 -f
RewriteRule ^static/some_(.*)$ statics/x/$1  [L]

RewriteEngine On
RewriteRule %{REQUEST_FILENAME} ^static/some_(.*)$
RewriteCond %{DOCUMENT_ROOT}/statics/y/%1 -f
RewriteRule ^static/some_(.*)$ statics/y/$1  [L]

トリックは、RewriteCond backreferenceを使用することです。この構文は のようなもの%1で、以前の RewriteCond でグループ化された部分を一致させます。

また、RewriteCondオプションには絶対ローカル パスが必要であることを指摘してくれたJon Linに感謝します。-f

更新: RewriteCond -f に %{DOCUMENT_ROOT} を追加、Jon Linによって発見

于 2012-09-26T09:03:16.480 に答える