试图得到

www.example.com

直接转到

www.example.com/store

我已经尝试了多个代码位,但没有工作。

我的尝试:

Options +FollowSymlinks
RewriteEngine on

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

RewriteCond %{HTTP_HOST} ^(.+)\www.example\.com$
RewriteRule ^/(.*)$ /samle/%1/$1 [L]

我做错了什么?


当前回答

我不明白你的问题……

如果你想重定向每个请求到一个子文件夹:

RewriteRule ^(.*)$ shop/$1 [L,QSA]

http://www.example.com/* -> wwwroot/store/*

如果要重定向到具有域名的子文件夹

RewriteCond %{HTTP_HOST} ([^\.]+\.[^\.]+)$
RewriteRule ^(.*)$ %1/$1 [L,QSA]

http://www.example.com/* -> wwwroot/example.com/*

其他回答

我很惊讶居然没有人提到这一点:

RedirectMatch ^/$ /store/

基本上,它只重定向根URL。 答案就来自这个链接

我搜索了一下,得到了这些结果:

RewriteEngine在RewriteBase上 / RewriteRule ^index.(.*)?$ http://domain.com/subfolder/ (r = 301) 这将使任何尝试转向 访问一个名为index的文件。的东西 您的子文件夹,是否文件 存在与否。

或者试试这个:

RewriteCond % {HTTP_HOST} 样品! ^ www。com美元(NC) RewriteRule ^(*)美元。 % {HTTP_HOST} - samlse / 1 (R = 301美元,L]

我没有在.htaccess文件中做很多重定向,所以我不确定这是否会工作。

你可以使用一个重写规则,使用^$来表示根目录,并将其重写到你的/store目录,如下所示:

RewriteEngine On
RewriteRule ^$ /store [L]

以前,我使用下面的代码,这是工作正确重定向根URL我的每个域/子域到他们的通信子目录,命名完全为子/域它自己如下:

RewriteCond %{HTTP_HOST} ^sub1.domain1.com
RewriteCond %{REQUEST_URI} !subs/sub1.domain1.com/
RewriteRule ^(.*)$ subs/%{HTTP_HOST}/$1 [L,QSA]

RewriteCond %{HTTP_HOST} ^sub2.domain1.com
RewriteCond %{REQUEST_URI} !subs/sub1.domain2.com/
RewriteRule ^(.*)$ subs/%{HTTP_HOST}/$1 [L,QSA]

RewriteCond %{HTTP_HOST} ^sub1.domain2.com
RewriteCond %{REQUEST_URI} !subs/sub1.domain2.com/
RewriteRule ^(.*)$ subs/%{HTTP_HOST}/$1 [L,QSA]

RewriteCond %{HTTP_HOST} ^sub2.domain2.com
RewriteCond %{REQUEST_URI} !subs/sub2.domain2.com/
RewriteRule ^(.*)$ subs/%{HTTP_HOST}/$1 [L,QSA]

然而,当我想添加另一个子或域,那么它将需要添加在上面的代码。将它简化为通配符(*)会更方便,如下所示:

RewriteCond %{HTTP_HOST} ^sub
RewriteCond %{REQUEST_URI} !/subs/
RewriteRule ^(.*)$ subs/%{HTTP_HOST}/$1 [L,QSA]

因此,每当添加另一个子域名/域时,只要子域名有一个sub前缀(如:sub3.domain1.com, sub1.domain3.com等),代码将保持有效。

上述大多数解决方案都是正确的,但它们都缺少重定向的透明性。

在我的例子中,当访问www.example.com时,我想重定向到子目录/store,但不更新URL到www.example.com/store。(所有我想要的是获得该目录的页面代码)。如果这是你的情况,下面的解决方案是完美的。

RewriteEngine on
RewriteCond %{HTTP_HOST} example\.com [NC]
RewriteCond %{REQUEST_URI} ^/$
RewriteRule ^(.*)$ /store/$1 [L]

来源:http://wiki.dreamhost.com/Transparently_redirect_your_root_directory_to_a_subdirectory