2016-10-06 3 views
0

私は自分のサイトにアップロードされたPDFを指すような野生のリンクを持っています。 PDFを提供するのではなく(これはもはや存在しない)、私は人々をYouTubeのビデオに送りたい。私は、.htaccessファイルにこのような何かを試してみた:アップロード用のWordPressリクエストを外部URLにリダイレクトするにはどうすればよいですか?

RewriteEngine On 
RewriteRule "Case-Study\.pdf$" "https://www.youtube.com/watch?v=dQw4w9WgXcQ" [R=301,L] 

それはhttps://example.com/wp-content/uploads/2016/09/Case-Study.pdfだとき、これは、URLがhttps://example.com/Case-Study.pdfあるときに動作しますが、ありません。後者はもちろん、リダイレクトする必要があるURLです。

.htaccessファイルの残りの部分はそうのようになります。

だから、
# BEGIN GD-SSL 
<IfModule mod_rewrite.c> 
Options +FollowSymLinks 
RewriteEngine On 
RewriteRule "Case-Study\.pdf$" "https://www.youtube.com/watch?v=dQw4w9WgXcQ" [R=301,L] 
RewriteCond %{HTTPS} !=on 
RewriteCond %{HTTP_USER_AGENT} ^(.+)$ 
RewriteCond %{SERVER_NAME} ^example\.com$ 
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L] 
# Header add Strict-Transport-Security "max-age=300" 
</IfModule> 
# END GD-SSL 
RewriteEngine on 
RewriteRule ^/contact$ https://example.com/#contact [R=301,L] 

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 

php_value post_max_size   128M 
php_value upload_max_filesize  64M 
# END WordPress 

、なぜ私のRewriteRuleが動作しませんか? (ご協力ありがとうございます)

+0

.htaccessはルートにあります。しかし、私はuploadsディレクトリに簡単に追加することができました。 – NotoriousWebmaster

+0

@anubhavaはそれを試して、まだ404を取得しています。 – NotoriousWebmaster

+0

@anubhavaどのようにプラグインが.htaccessをバイパスできますか? .htaccessはリクエストをPHPに渡す前にApacheによって処理されるでしょうか? – NotoriousWebmaster

答えて

0

mod-rewriteは別のモジュールmod_negotiationによって破壊されることが判明しました。ネゴシエーションのMultiViewsオプションを使用すると、mod_rewriteに行く前に、欠落しているファイルに対して404を返すことができます。

上記のRewriteRuleはそこにあるファイルで動作します。またはそこにはないファイルで動作しますが、マルチビューが有効になっていないサーバー上で動作します。

ここでさらに詳しく説明します。https://www.systemcodegeeks.com/web-servers/apache/apache-multiviews-mod_rewrite/

関連する問題