【发布时间】:2015-10-18 17:45:48
【问题描述】:
我刚开始学习 .htaccess ,我似乎无法理解如何重定向到一个 url ,当当前 url 不包含任何内容和/或不像它假设的那样。
例如:
有人试图访问 www.example.com/contact.php 。但是我的 htaccess 说每个不是 www.example.com 或不包含 '?page='(www.example.com/index.php?page=contact.php) 的网址都应该更改为 www.example .com。
此检查必须在此之前:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www.example.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
因此,每当用户键入 example.com 时,它将被重定向到 www.example.com。如果它写入 example.com/contact.php 或 www.example.com/contact.php ,它将被重定向到 www.example.com ,因为它不是 www.example.com 也不包含 '?page=' 。
【问题讨论】:
-
你的 htaccess 没有说你提到的任何事情。如图所示,如果 host 不是
www.example.com,它会将任何 URL 重定向到www.example.com。资源/index.php与主机地址不同 -
@arco444 ,正如我所说....我刚开始学习 1 小时前,我很困...
-
如果我理解,您想检查文件是否存在(例如
contact.php),如果不存在,请重定向到主页? -
@zessx ,不,我想检查 url 是像 www.example.com 还是像 www.example.com/index.php?page=contact.php ,换句话说,如果它包含 '?page=' (这个子字符串在我的应用程序中是静态的)。如果当前的 url 和这 2 个一样,那么没关系,但如果不是,那么它应该重定向到 www.example.com 。例如,如果有人访问 www.example.com/contact.php ,它没有通过条件,所以它会被重定向。
标签: php apache .htaccess mod-rewrite redirect