如何在htaccess中获得if-else重定向?

时间:2019-03-27 20:08:43

标签: apache .htaccess mod-rewrite

这是我在某个文件夹中的htaccess代码:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^index\.php$ - [L]
RewriteRule (.*) ./index.php?id=$1 [L]
</IfModule>

如果HTTP_REFERER是我自己的站点,我该如何做到这一点,但是如果不是,则重定向到某个文件?

我一直在尝试类似的方法,但是它不起作用:

  <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTP_REFERER} ^http://.*MYSITE.*$ [NC]
    RewriteRule ^index\.php$ - [L]
    RewriteRule (.*) ./index.php?id=$1 [L]
    RewriteCond %{HTTP_REFERER} !^http://.*MYSITE.*$ [NC]
    RedirectMatch 301 ^(.*)$ MYFILE.jpg
</IfModule>

我已经阅读了有关该主题的几篇文章,但是没有任何一种方法可以达到我想要的效果。谢谢

1 个答案:

答案 0 :(得分:1)

您可以使用此:

 RewriteEngine on

#if http_referer is not my site then redirect the request 
RewriteCond %{HTTP_REFERER} !mysite\.com [NC]
RewriteCond %{REQUEST_URI} !/thispage\.php [NC]
RewriteRule (.*) http://example.com/thispage.php [L,R=301]
#rules for mysite.com
RewriteRule ^index\.php$ - [L]
RewriteRule (.*) ./index.php?id=$1 [L]