我需要有:

http://www.example.com/v1/my-project/重定向到 http://example.com/my-project/

这样:

(1)从HTTP_HOST

除去在WWW
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]

(2)去除所述REQUEST_URI的 'V1 /' 部分

RewriteCond %{REQUEST_URI} ^/v1/(.*)$ [NC]
RewriteRule . %1 [R=301,L]

(3)I也希望将所有404重定向到主页。

ErrorDocument 404 /

(4)最后,我的所有文件实际上存在于哪些主机当前活动网站“V2 /”文件夹中,但我不希望在网址“V2”,只是“/”

RewriteCond %{REQUEST_URI} !^/v2/ [NC]
RewriteRule ^(.*)$ /v2/$1 [NC,L]

所以,这里是我的规则。我的问题是:我不管理(2):它被重定向到/(因为规则(3)我想我想到自己的规则的顺序一定是错误的,但我似乎无法得到它的权利可以。你帮忙吗?

有帮助吗?

解决方案

“第3条”是不是规则可言,而其相对于您的RewriteRules顺序并不重要。规则2失败某些其他原因。我不知道是否会解决你的问题,但我会用这样写他们有所简化你的规则:

RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule (.*) http://example.com/$1 [R=301,L]

RewriteRule ^v1/(.*) /$1 [R=301,L,NC]

RewriteCond %{REQUEST_URI} !^/v2/ [NC]
RewriteRule (.*) /v2/$1 [NC,L]

其他提示

您应该先写,是造成外部重定向(R标志),然后将其它规则的任何规则。否则,可用于外部重定向尽管它只是用于内部重定向已重写网址。

所以我不会改变你现在所拥有的顺序。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top