我需要阻止直接访问网址(http://www.example.com/gated-asset)。有没有办法在htaccess文件中添加代码,将所有直接流量重定向到另一个页面(http://www.example.com/form)?
我在htaccess文件中尝试了以下代码,但所有页面(包括主页)都重定向到www.example.com/form。
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://go.example.com [NC]
RewriteRule .* http://www.example.com/form [R,L]
整个.htaccess文件看起来像这样(它是一个WordPress网站):
# 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>
# END WordPress
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://go.example.com [NC]
RewriteRule .* http://www.example.com/form [R,L]
我也尝试了以下内容:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://go.example.com [NC]
RewriteRule ^/$ /form/ [R,L]
RewriteRule ^/$ /gated-asset/ [R,L]
以及:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://go.example.com [NC]
RewriteRule http://www.example.com/gated-asset http://www.example.com/form/ [R,L]
答案 0 :(得分:0)
如果您匹配开头(http://
),则需要在引荐来源检查中加入^
。与HTTP_HOST
不同,HTTP_REFERER
需要它。此外,引荐网址可能包含REQUEST_URI
,因此在域中关闭表达式会阻止其工作。
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://go.example.com [NC]
RewriteRule .* http://www.example.com/form [R,L]
如果您不想加入http://
,则可以使用以下条件:
RewriteCond %{HTTP_REFERER} !go.example.com [NC]
但是,我建议使用第一个例子。
此处还包括R
和L
标志。如果重写是外部资源,则隐含R
,但通常最好包含它。