Apache Rewrite 是一个强大的工具,用于根据特定条件重写 URL。要实现条件判断,你可以使用 RewriteCond 指令。以下是一些示例,说明如何使用 RewriteCond 实现条件判断。
- 根据请求的 URI 是否包含某个子字符串来重写 URL:
RewriteEngine On RewriteCond %{REQUEST_URI} ^/example/(.*)$ RewriteRule ^example/(.*)$ /new-example/$1 [R=301,L]
在这个例子中,如果请求的 URI 以 /example/
开头,它将被重写到 /new-example/
。
- 根据 HTTP 请求头来重写 URL:
RewriteEngine On RewriteCond %{HTTP_HOST} ^olddomain\.com$ RewriteRule ^(.*)$ http://www.newdomain.com/$1 [R=301,L]
这里,如果请求的主机名是 olddomain.com
,URL 将被重写到 www.newdomain.com
。
- 根据客户端的浏览器类型来重写 URL:
RewriteEngine On RewriteCond %{HTTP_USER_AGENT} ^Mozilla/5\.0 (compatible; MSIE 9\.0; Windows NT 6\.1; Trident/5\.0)$ RewriteRule ^old-page$ /new-page [R=301,L]
在这个例子中,如果客户端使用的是 Internet Explorer 9 浏览器,访问 /old-page
的请求将被重写到 /new-page
。
你可以根据需要组合这些条件,使用逻辑运算符(如 &&
和 ||
)来实现更复杂的条件判断。例如:
RewriteEngine On RewriteCond %{HTTP_HOST} ^olddomain\.com$ && %{HTTP_USER_AGENT} ^Mozilla/5\.0 (compatible; MSIE 9\.0; Windows NT 6\.1; Trident/5\.0)$ RewriteRule ^old-page$ /new-page [R=301,L]
这个例子表示,只有当请求的主机名是 olddomain.com
且客户端使用的是 Internet Explorer 9 浏览器时,访问 /old-page
的请求才会被重写到 /new-page
。