2015-08-09 63 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

相關問題