2015-05-21 118 views
3

我通過移動設備訪問時將我的網站重定向到移動網站。htaccess重定向後從移動網站訪問父網站的文件夾

這裏的htaccess的代碼:FTP的

RewriteCond %{QUERY_STRING} !^desktop 
RewriteCond %{HTTP_USER_AGENT} android|avantgo|blackberry|iphone [NC] 
RewriteRule^http://m.example.com%{REQUEST_URI} [R,L] 

文件夾結構是這樣的:

Images 
ProImages 
Mobile // All mobile site data into this 

當我試圖從我的移動網站訪問http://www.example.com/ProImages/abc.jpg,它並沒有顯示出來,因爲如一旦它試圖呼叫www,它就會重定向到m

我試過使用../ProImages但這再次沒有解決問題。

有人可以幫忙嗎?

+0

,由於你的規則是基於'HTTP_USER_AGENT'重定向是正確的行爲。爲了防止重定向,你可以使用這個URL:'ttp://www.example.com/ProImages/abc.jpg?desktop' – anubhava

回答

2

可以允許訪問圖像文件夾移動版

RewriteCond %{QUERY_STRING} !^desktop 
RewriteCond %{HTTP_USER_AGENT} android|avantgo|blackberry|iphone [NC] 
RewriteCond %{REQUEST_URI} !^/ProImages/ [NC] 
RewriteRule^http://m.example.com%{REQUEST_URI} [R,L] 
+0

好吧,這似乎是我的問題的合法答案。由於這是我唯一關心的文件夾,因此可以很好地工作。謝謝 :) –

1

您可以從Mobile文件夾中對圖像文件夾進行符號鏈接。

如果你有shell訪問,移動文件夾內做到:

ln -s /path/to/document/root/ProImages ./ProImages 

這樣,你可以致電Mobile/ProImages和正在顯示的內容是從ProImages從父文件夾。

+0

不錯的解決方案,也會看到這個。 :) –

1

通常我都是使用服務器重定向,但使用PHP的移動。我建議使用mobile_detect類。我工作非常好它匹配幾乎一切。您甚至可以根據具體情況進行檢測,例如在平板電腦或iPad上或其他任何您想要的內容。這很容易使用,而不是使用.htaccess進行用戶代理。所以你可以像下面這樣做if語句,然後用php做一個重定向。

這是他們的頁面的代碼示例。 http://mobiledetect.net/

// Include and instantiate the class. 
require_once 'Mobile_Detect.php'; 
$detect = new Mobile_Detect; 

// Any mobile device (phones or tablets). 
if ($detect->isMobile()) { 
    header('Location: http://m.example.com/'.$_SERVER["REQUEST_URI"]); 
} 

// Any tablet device. 
if($detect->isTablet()){ 

} 

// Exclude tablets. 
if($detect->isMobile() && !$detect->isTablet()){ 

} 

// Check for a specific platform with the help of the magic methods: 
if($detect->isiOS()){ 

} 

if($detect->isAndroidOS()){ 

} 

// Alternative method is() for checking specific properties. 
// WARNING: this method is in BETA, some keyword properties will change in the future. 
$detect->is('Chrome') 
$detect->is('iOS') 
$detect->is('UC Browser') 
// [...] 

// Batch mode using setUserAgent(): 
$userAgents = array(
'Mozilla/5.0 (Linux; Android 4.0.4; Desire HD Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19', 
'BlackBerry7100i/4.1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/103', 
// [...] 
); 
foreach($userAgents as $userAgent){ 

    $detect->setUserAgent($userAgent); 
    $isMobile = $detect->isMobile(); 
    $isTablet = $detect->isTablet(); 
    // Use the force however you want. 

} 

// Get the version() of components. 
// WARNING: this method is in BETA, some keyword properties will change in the future. 
$detect->version('iPad'); // 4.3 (float) 
$detect->version('iPhone') // 3.1 (float) 
$detect->version('Android'); // 2.1 (float) 
$detect->version('Opera Mini'); // 5.0 (float) 
// [...] 
+0

'header('Location:http://m.example.com/'.$_SERVER [「REQUEST_URI」]。'';' – Lupin

+0

@Lupin哎呀是的,我寫得很快。 :)修復。 –

+0

我以前使用過這種方式,但是這種方式要好得多。感謝您的信息:) –