如何将WordPress请求重定向到外部URL?

时间:2016-10-06 14:04:06

标签: wordpress .htaccess redirect mod-rewrite

我在野外有一个指向上传到我网站的PDF的链接。我希望将人们发送到YouTube视频,而不是提供PDF(不再存在,顺便说一句)。我在.htaccess文件中尝试过类似的东西:

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

这适用于网址为https://example.com/Case-Study.pdf的情况,但不适用于https://example.com/wp-content/uploads/2016/09/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不工作? (感谢您的帮助。)

1 个答案:

答案 0 :(得分:0)

事实证明mod-rewrite可以被另一个模块破坏:mod_negotiation。如果您使用协商的MultiViews选项,则在转到mod_rewrite之前,它可以为丢失的文件返回404.

所以上面的RewriteRule适用于那里的文件;或者使用不存在的文件,但是在没有启用MultiView的服务器上工作。

在此详细解释:https://www.systemcodegeeks.com/web-servers/apache/apache-multiviews-mod_rewrite/