.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,因为还有另一个我不需要影响的“地理重定向”。因此,我需要做的是只重定向那些子页面,而不是父/主域 以下是我正在使用的(最近的一次迭代):.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,因为还有另一个我不需要影响的“地理重定向”。因此,我需要做的是
# 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]