Htaccess重定向全部隐藏目录

时间:2016-06-16 18:49:54

标签: php .htaccess redirect

我希望从桌面登陆domain.com的访问者转移到domain.com/desktop,同时隐藏" desktop"部分在URL。

最后,如果他们从手机访问domain.com,我希望将其转移到domain.com/m。在这种情况下," m"可以留下我猜,我不在乎。

我的问题是;是.htaccess或我的public_html的index.php中的重定向?

编辑:我的/ desktop /目录的htaccess包含:

RewriteEngine On
RewriteRule ^inc/.*$ index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]

.htaccess包含以下内容:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com$
RewriteRule !^desktop/ /desktop%{REQUEST_URI}  [L]

我的public_html' index.php包含:

include 'mobile_detect.php';
$detect = new Mobile_Detect();
if ($detect->isMobile()) {
    header("Location: http://domain.com/m"); exit;
}else{
    header("Location: http://domain.com/desktop"); exit;
}

我觉得我做错了什么,我无法弄清楚它是什么。帮助

非常感谢。

1 个答案:

答案 0 :(得分:1)

查看this duplicate answer - 它会将移动用户重定向到m.domain.com,这可能是一个更好的系统,因为您可以使用另一个VirtualHost来完全分离移动网站,因此它不会导致任何重定向循环。

至于重定向到/desktop,为什么有必要?您可以将其简化为两个VirtualHosts:

(VirtualHost配置通常存储在/etc/apache2/sites-enabled/000-default.conf

<VirtualHost *:80>
    ServerName m.domain.com
    DocumentRoot /var/www/mobile/
</VirtualHost>
<VirtualHost *:80>
    ServerName domain.com
    ServerAlias www.domain.com
    DocumentRoot /var/www/desktop/
</VirtualHost>