2015-08-09 100 views
1

我的.htaccess现在正在寻找这样的权利:使用的.htaccess重定向到网站 - 404错误

RewriteCond %{HTTP_USER_AGENT} Opera 
RewriteCond %{QUERY_STRING} aid=(?:[0-9]{1,3}|1000) 

<If "%{QUERY_STRING} == 'aid=001'"> 
RewriteRule ^/(.*) http://m.example1.com/? [L,R=302] 
</If> 
<ElseIf "%{QUERY_STRING} == 'aid=002'"> 
RewriteRule ^/(.*) http://m.example2.com/? [L,R=302] 
</ElseIf> 
... 

但是当我现在访问我的网站http://test.com/article-title?aid=001铬我得到rediected了。通常我只能在使用歌剧时重定向。

我做错了什么?

更新,现在我的htaccess正在寻找这样的:

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

RewriteCond %{QUERY_STRING} aid=(?:[0-9]{1,3}|1000) 

<If "%{QUERY_STRING} == 'aid=001'"> 
RewriteCond %{HTTP_USER_AGENT} Opera 
RewriteRule ^/(.*) http://m.example1.com/? [L,R=302] 
</If> 
<ElseIf "%{QUERY_STRING} == 'aid=002'"> 
RewriteCond %{HTTP_USER_AGENT} Opera 
RewriteRule ^/(.*) http://m.example2.com/? [L,R=302] 
</ElseIf> 

我想这太

RewriteEngine On 
RewriteCond %{QUERY_STRING} aid=(?:[0-9]{1,3}|1000) 

<If "%{QUERY_STRING} == 'aid=001'"> 
RewriteCond %{HTTP_USER_AGENT} Opera 
RewriteRule ^/(.*) http://m.example1.com/? [L,R=302] 
</If> 
<ElseIf "%{QUERY_STRING} == 'aid=002'"> 
RewriteCond %{HTTP_USER_AGENT} Opera 
RewriteRule ^$ http://m.example2.com/ [L,R=302] 
</ElseIf> 
# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 
# END 
+0

一般来说找到答案,基于特定的浏览器或版本重定向是一个坏主意,你应该避免。你能分享一下你的情况吗? – Avalanche

+0

好吧,让我们假设我想重定向每一个来到我的网站http://test.com/article-title?aid=001与iPhone(所以RewriteCond%{HTTP_USER_AGENT} iPhone)到我的另一个网站http:///iphone1.com/。然后我只想要这种情况发生,如果用户真的在使用和iphone,我不希望它发生,如果我浏览我的网站与我的铬在dekstop。 – Salexes

回答

1

不能外if/elseif条件与随之而来的内部合并的条件。使用它作为:

RewriteEngine On 
RewriteBase/

RewriteCond %{QUERY_STRING} (^|&)aid=001(&|$) [NC] 
RewriteCond %{HTTP_USER_AGENT} opera [NC] 
RewriteRule^http://m.example1.com/? [NE,L,R=302] 

RewriteCond %{QUERY_STRING} (^|&)aid=002(&|$) [NC] 
RewriteCond %{HTTP_USER_AGENT} opera [NC] 
RewriteRule^http://m.example2.com/? [L,R=302] 

# BEGIN WordPress 
RewriteRule ^index\.php$ - [L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . index.php [L] 
# END 
+0

谢谢我已经尝试过,但是现在当我访问我的网站http://test.com/article-title?aid=001 - >找不到 请求的URL /文章标题不是在这台服务器上找到。 通常它应该只显示在铬上的正常页面。对? – Salexes

+0

这只是将'http://test.com/article-title?aid = 001'重定向到用户代理opera的'http:// m.example1.com /'。所以'/ article-title'在重定向后不会在那里。除了opera以外,所有其他浏览器都不会受到这个规则的影响,因此'http://test.com/article-title?aid = 001'将以正常方式工作,因为没有这些规则。 – anubhava

+0

这正是我的想法,但该网站现在在其他浏览器上无法正常工作。尝试访问http://test.com/article-title?aid=001与ie,铬和Firefox现在和每次我得到一个未找到。 当我使用opera访问它时,我被重定向到http://m.example1.com/ – Salexes

相关问题