フォルダ内に既に存在するファイルのルールを別の場所を指すようにするにはどうすればよいですか?たとえば、wp-content/uploads/
フォルダ内のpdfファイルへの任意の要求をページdownload/?q=$1
に書き換えるためです。フォルダ内に存在するpdfファイルのルールを書き込む方法
私は、次の
# checks that the request is for a file that *does not* exist
RewriteCond %{REQUEST_FILENAME} !-f
# make sure we've not already redirected to the uploads directory
# (in case it doesn't exist in there either)
RewriteCond %{REQUEST_URI} !^/wp-content/uploads/
# the rule matches against either pdf, zip or xls.
RewriteRule ([^/]*\.(pdf|zip|xls))$ /wp-content/uploads/$1 [NC,L,R=301]
とSO related question for moved pdf filesで見てきた。しかし、私は逆の効果をしたいです。既存のファイルのリダイレクトを作成し、存在しないファイルに対して404が見つからないようにしてください。
私は運がない別のアプローチを試みました。 WordPressのデフォルトの.htaccess
ファイルがルートフォルダ内にある場合は、これを妨害することがあります。 pdfのすべてのリクエストをカスタムページに書き換えるには?
EDIT:
.htaccess
ファイルはwp-content/uploads
フォルダにあります。
WordPressのは、私はすでにカスタムプラグインで、以下の機能を持っているAPI書き換えについて:私の理解から
function add_rewrite_rules($aRules) {
$new_rules = array(
'exams/([^/]+)/([^/]+)/?$' => 'index.php?pagename=exams&type=$matches[1]&city=$matches[2]',
'exams/([^/]+)/([^/]+)/subject/([^/]+)/?$' => 'index.php?pagename=exams&type=$matches[1]&city=$matches[2]&subject=$matches[3]'
);
return $aRules + $new_rules;
}
を、これらの機能はRewrite API/add rewrite rule文書で説明したように、私たちはWordPressのための追加の書き換えルールを指定することができます。したがって、.htaccess
ファイルで指定されたルールの内容には影響しないはずです。
...ルート
.htaccess
にルールを移動することです。あなたのメイン '.htaccess'ファイルでこれを試してください:' RewriteRule ^。* \ .pdf $/wp-content/download/[R = 301、L] '。拡張子が.pdfのファイルに対して動作します。 (RewriteRule ^(。*)//wp-content/download/[R、L] 'ともに – LoicTheAztecの前に' RewriteEngine On'で@LoicTheAztec 。あなたはまったく正しい。私は問題を幾分不満足にさらしながら質問をしようとしたが、私は目標が何かを忘れてしまった。私は質問を書き換えます。 – pQB
あなたのWPのインストールにはいくつかのプラグインがインストールされている可能性があり、そのために.htaccessルールをスキップし、キャッシュからファイルを提供することがあります。 – anubhava