通过ht访问文件重定向无法正常工作

时间:2017-04-06 13:27:58

标签: .htaccess redirect

以下是该方案:

有一个名为“example.com”的网站和一个名为“mobile”的文件夹,用于通过手机或标签访问网站

如果用户在浏览器中只键入“example.com”,则应将其重定向到https://www.example.com,该https://www.example.com符合以下代码中的.htaccess:

RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule ^/?$ "https\:\/\/www\.example\.com" [R=301,L]

或者,如果用户正在从移动设备访问网址https://mobile.example.com,则应将其重定向到https://www.example.com

现在,每当我从移动设备访问网址https://mobile.example.com时 它将浏览器重定向到https://www.example.com,但根据.htaccess中的代码再次将其视为url “example.com”的特定部分,并将浏览器重定向回https://www.example.com它终于在无限循环中产生错误的方式:

“获取页面超过了最多10个重定向。”

我尝试在.htaccess文件中添加这样的内容,以便在没有“mobile”字作为前缀的情况下不重定向到{{3}}

  RewriteCond %{HTTP_HOST} ^example\.com$
  RewriteRule ^mobile/ - [L]
  RewriteRule ^/?$ "https\:\/\/www\.example\.com" [R=301,L]

请告知。

这是.htaccess文件的构建方式

RewriteEngine on

RewriteRule ^mobile - [L]

RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule ^/?$ "https\:\/\/www\.example\.com" [R=301,L]

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{www.example.com}/$1 [R,L]

##DISABLE VIEWING DIRECTORIES##
Options -Indexes
##DISABLE VIEWING DIRECTORIES##

##DISABLE VIEWING DIRECTORIES FILES##
RewriteEngine on 
RewriteCond %{HTTP_REFERER} !^https://(www\.)?example.com [NC]
RewriteCond %{HTTP_REFERER} !^https://(www\.)?example.com/.*$ [NC]
RewriteRule .*\.(png|gif)$ - [F,NC]
##DISABLE VIEWING DIRECTORIES FILES##

##DISABLE VIEWING admin DIRECTORY FILES##
RewriteEngine on 
RewriteCond %{HTTP_REFERER} !^https://(www\.)?example.com [NC]
RewriteCond %{HTTP_REFERER} !^https://(www\.)?example.com/.*$ [NC]
RewriteRule ^admin/.+\.php$ - [F,L]
##DISABLE VIEWING admin DIRECTORY FILES##

header.php重定向代码

<script type="text/javascript">
if (screen.width <= 699) {
document.location = "https://mobile.example.com";
}
</script>

1 个答案:

答案 0 :(得分:0)

您没有正确使用RewriteCond。如果您想在uri / mobile / 时跳过网址重写,并将 example.com 重定向到 https://www.example.com ,您可以使用以下内容

#Skip url rewriting if requested uri is /mobile
RewriteRule ^mobile - [L]
#redirect example.com/ to http://www.example.com/
RewriteCond %{HTTP_HOST} ^example.com$
RewriteRule ^/?$ https://www.example.com/ [L,R]

/ 不是mod-rewrite中的特殊字符,你不需要逃避它。