私はひどいですmod_rewrite
が、フォルダーへのリクエストを書き直して/files/users/*/
(*はワイルドカードです)、/view/
次のようにファイル名をクエリパラメーターに挿入する必要があります。
/files/users/9/test.pdf
になる/view/?file=test.pdf
.htaccess
ファイルが内部にあると仮定すると、どうすればよいでしょう/files/users/
か。
私はゆっくりとmod_rewrite
.
私はひどいですmod_rewrite
が、フォルダーへのリクエストを書き直して/files/users/*/
(*はワイルドカードです)、/view/
次のようにファイル名をクエリパラメーターに挿入する必要があります。
/files/users/9/test.pdf
になる/view/?file=test.pdf
.htaccess
ファイルが内部にあると仮定すると、どうすればよいでしょう/files/users/
か。
私はゆっくりとmod_rewrite
.
では、私の企業秘密をすべて銀の皿に載せたいと思いますか?
そうですね、頑張ります。;-)
まず、ドキュメントがどこにあるかを知る必要があります。リファレンスについては、こちらをご覧ください: mod_rewrite
. またはmod_rewrite
、Apache のバージョンが 2.2 の場合。
Apache mod_rewriteで、多くのリンクを含む概要を見つけることができます。そこには、URL の書き換えに関する優れた紹介があります。多くの標準的な例については、こちらもご覧ください。
mod_rewrite は PCRE 正規表現をサポートしているため、時々 perlreやregular-expression.infoが必要になることがあります。
今あなたの質問に
RewriteEngine On
RewriteRule ^(?:.+?)/(.*) /view/?file=$1
これで十分かもしれません。サブディレクトリを検索し、このサブディレクトリ(?:.+?)
内/files/users
のファイルの名前を取得します(.*)
。このパターンが一致する場合、URL を書き換えて/view/?file=
、キャプチャしたファイルに を追加し$1
ます/view/?file=$1
。
もちろん、テストされていないものはすべて楽しんでください。
PS 追加情報は SO at .htaccess infoおよび.htaccess faqにあります。
以下のディレクティブを.htaccess
ファイルに入れ、に書き換え /files/users/9/test.pdf
ます/view/?file=test.pdf
。実際には、これは、http ://yourdomain.com/files/users/9/test.pdf にアクセスすると、訪問者にはhttp://yourdomain.com/view?file=testという書き換えられた URLが提供されることを意味します。 .pdf
RewriteRule ^[^/]+/(.*)$ /view/?file=$1 [L]
RewriteRuleディレクティブは、Apache mod_rewriteモジュールの一部です。次の 2 つの引数を取ります。
.htaccess
コンテキストでは先頭のスラッシュ/が削除されてmy/pathになることに注意してください)。パターン^[^/]+/(.*)$
:
^ - the regex must match from the start of the string
[^/] - match everything but forward slash
+ - repetition operator which means: match 1 or more characters
/ - matches a forward slash
(.*) - mathes any characters. The dot means match any character. The star operator means match ANY characters (0 or more). The parantheses means the match is grouped and can be used in backreferences.
$ - the regex must match until the end of the string
置換/view/?file=$1
:
...ということは、URL パスを/view/
クエリ パラメーター ファイルを含むフォルダーに書き換えることを意味します。query パラメーターには、値を渡すと、パターンfile
からの最初のグループ化された一致が含まれます (これは、RewriteRule パターンからの最初の一致を意味します)。 $1
[L]
フラグ:
... mod_rewriteが書き換えルールの処理を停止することを意味します。これは、望ましくない動作や無限ループを回避するのに便利です。