0

我有一个网站(WordPress 多站点),我已将一堆内容从路由域 (http://domain[dot]com) 移动到子域 (http://sub.domain[dot]com) . 现在我需要将用户引导到路由站点 (http://domain[dot]com/page) 的所有页面到他们的新位置 (http://sub.domain[dot]com/page)。但是......这是我真正苦苦挣扎的一点......我需要从这个重写中省略路由url,因为还有另一个我不需要影响的“地理重定向”。因此,我需要做的是仅重定向那些子页面,而不是父/主域。

这是我正在使用的(最近的迭代):

# ignore the home page, not working :(
RewriteCond %{HTTP_HOST} !^(.*)\.routetogreatness\.com$ [NC]
# redirect all the sub pages, works
RewriteCond %{HTTP_HOST} ^routetogreatness.com [NC]
RewriteRule ^(.*)$ http://global.routetogreatness.com/$1 [L,R=301]

任何帮助将不胜感激。

4

2 回答 2

0

好的,所以上面的解决方案对我来说不太有效,因为事实证明,虽然这在子/子页面上运行良好,但它会跳过父页面以及主页(例如域/新闻。我'最终运行了这个:

RewriteCond %{REQUEST_URI} !^/$
RewriteCond %{HTTP_HOST} ^domain.com [NC]
RewriteRule ^(.*)$ http://sub.domain.com/$1 [L,R=301]

这只是跳过主页或根 URL 并重定向其他所有内容,甚至 404。

于 2013-07-15T12:52:58.007 回答
0

我认为您正在搜索的是一个检查请求的文件是否不是文件名的条件。就是这样RewriteCond %{REQUEST_FILENAME} !-f。如果%{REQUEST_FILENAME}(我相信基于请求的服务器上文件的绝对路径)不是文件,这是真的。(请注意:我没有测试此代码,因为我无法访问此位置的服务器,但我认为它应该可以工作。)

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{HTTP_HOST} ^domain.com [NC]
RewriteRule ^(.*)$ http://sub.domain.com/$1 [L,R=301]

另一种解决方案是仅在请求的 url 包含斜杠时才重写 url。它会重定向domain.com/folder/index.php,但不会domain.com/index.php

RewriteCond %{REQUEST_URI} ^/([^/]+)/(.+)$
RewriteCond %{HTTP_HOST} ^domain.com [NC]
RewriteRule ^(.*)$ http://sub.domain.com/$1 [L,R=301]
于 2013-07-14T18:44:44.253 回答