Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess 使用htaccess仅重定向子页_.htaccess - Fatal编程技术网

.htaccess 使用htaccess仅重定向子页

.htaccess 使用htaccess仅重定向子页,.htaccess,.htaccess,我有一个网站(WordPress multisite),我从路由域中移动了一堆内容(http://domain[dot]com)到子域(http://sub.domain[dot]com)。现在我需要引导用户访问route站点的所有页面(http://domain[dot]com/page)到他们的新位置(http://sub.domain[dot]com/page)。但是这里有一点我真的很挣扎。。。我需要从这次重写中省略路由url,因为还有另一个我不需要影响的“地理重定向”。因此,我需要做的是

我有一个网站(WordPress multisite),我从路由域中移动了一堆内容(http://domain[dot]com)到子域(http://sub.domain[dot]com)。现在我需要引导用户访问route站点的所有页面(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]

我们将非常感激您的帮助

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

另一种解决方案是仅在请求的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]

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

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

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

OMG。非常感谢Sumurai8的快速响应,第二个完全解决了问题(第一个不太好)。我应该在两小时前发布我的问题!再次感谢。
RewriteCond %{REQUEST_URI} !^/$
RewriteCond %{HTTP_HOST} ^domain.com [NC]
RewriteRule ^(.*)$ http://sub.domain.com/$1 [L,R=301]