0

需要使用 .htaccess 规则进行一些高级重定向

这是我目前的规则。

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/content/newzealand/mpc/mpc_newzealand_website/en/home_mpc/van.*
RewriteCond %{REQUEST_URI} !^/content/newzealand/mpc/mpc_newzealand_website/en/home_mpc/truck.*
RewriteCond %{REQUEST_URI} !^/admin.*
RewriteCond %{REQUEST_URI} !^/login.*
RewriteCond %{REQUEST_URI} !^/session.*
RewriteCond %{REQUEST_URI} !^/path_maps.*
RewriteCond %{REQUEST_URI} !.*\.(gif|jpg|png|js|css|swf)

RewriteCond %{HTTP_HOST} !^www\.dealer1\.com
RewriteCond %{HTTP_HOST} !^www\.dealer2\.com
RewriteCond %{HTTP_HOST} !^www\.dealer3\.com
RewriteCond %{HTTP_HOST} !^www\.dealer4\.com


RewriteRule (.*) http://www.example.com [R=301,L]

此规则将所有不在 RewriteCond 中的流量定向到www.example.com. 但是,如果是这样,我现在需要进行以下修改:

/content/newzealand/mpc/mpc_newzealand_website/en/home_mpc/van.*

路径被访问然后我希望它重定向www.example.com/van

4

2 回答 2

1

我要做的第一件事就是简单地做到这一点。首先在模式末尾添加 .* 是多余的,如果你想测试一个 URI 是否以.swfsay 结尾,那么你使用\.swf$. 还要在合理的地方结合规则。

接下来进行空白排除的最简单方法是使用“^ -”,它只是“总是什么都不做”的简写(如果满足条件)。添加 [L] 表示不使用以下规则。或者,您可以使用 [skip=N] 跳过接下来的 N 条规则。

并指定一个基数,例如 / 如果.htaccess在 DOCROOT 中,那么:

Options +FollowSymLinks
RewriteEngine On
RewriteBase   /
#
# No redirects for a specific list of dealers, paths and file types
#
RewriteCond %{HTTP_HOST}   ^www\.(dealer1|dealer2|dealer3|dealer4)\.com [OR]
RewriteCond %{REQUEST_URI} ^/(admin|login|session|path_maps)\b          [OR]
RewriteCond %{REQUEST_URI} \.(gif|jpg|png|js|css|swf)^
RewriteRule ^              -                                            [L]
#
# Otherwise redirect var URIs to /van
#
RewriteCond %{REQUEST_URI} ^/content/newzealand/mpc/mpc_newzealand_website/en/home_mpc/van
RewriteRule ^              http://www.domain.com/van                    [R=301,L]
#
# Redirect everything except truck to /
#
RewriteCond %{REQUEST_URI} !^/content/newzealand/mpc/mpc_newzealand_website/en/home_mpc/truck.*
RewriteRule ^              http://www.domain.com                        [R=301,L]

最后,我真的很怀疑你的长 URI。请求 URI 的所有内容,不包括服务器和查询位(例如,http//server/abc/login?user=fred它是/abc/login)。例如,您真的想将此站点上除此路径之外的所有内容重定向到新域吗?

http://www.domain.com/content/newzealand/mpc/mpc_newzealand_website/en/home_mpc/truck

强迫用户使用如此复杂的 URI 是阻止他们访问的好方法!

于 2012-08-14T09:59:26.220 回答
0

在您当前的规则之后,只需添加以下内容:

RewriteCond %{HTTP_HOST} !^www\.dealer1\.com
RewriteCond %{HTTP_HOST} !^www\.dealer2\.com
RewriteCond %{HTTP_HOST} !^www\.dealer3\.com
RewriteCond %{HTTP_HOST} !^www\.dealer4\.com

RewriteRule ^/?content/newzealand/mpc/mpc_newzealand_website/en/home_mpc/van.* http://www.domain.com/van [R=301,L]
于 2012-08-14T02:29:10.910 回答