的.htaccess重定向到另一个文件夹,但保留原来的域名

问题描述:

首先,的.htaccess重定向到另一个文件夹,但保留原来的域名

'example.com'结构域与'/home/defaultfolder/'文件夹。

我想用的.htaccess到

example.com , www.example.com 

重定向到

/home/somefolder/example/,不/home/defaultfolder/文件夹

。 (均为DocumentRoot的目录内)

也一样

a.example.com 

子域

/somefolder/example/a/ 

但保留 'example.com' 域。

我在网上尝试过一些例子,但没有任何事情可以做到。

我该如何编写.htaccess来做到这一点?谢谢。

当然,我不能更改服务器设置(如别名虚拟主机..),这就是为什么我试图通过修改文件来做到这一点。


我已经试过

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

RewriteCond %{HTTP_HOST} ^(www.)?example.com$ 
RewriteRule !^/somefolder/example/ /somefolder/example/1%{REQUEST_URI} [L] 


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

和其他一些..

+0

向我们展示你的企图,以便我们可以给你的建议。 – kmoser

+0

@anubhava那么如果路径在DocumentRoot中?我如何管理它? – klados

+0

但是请注意,如果'/ home/defaultfolder /'是您的站点根目录,则'/ home/somefolder /'被视为在'DocumentRoot'之外。 “DocumentRoot”路径中只能考虑'/ home/defaultfolder/somefolder /'。 – anubhava

有它这样的/home/.htaccess(站点根目录):

RewriteEngine On 

# handle example.com 
RewriteCond %{ENV:REDIRECT_STATUS} ^$ 
RewriteCond %{HTTP_HOST} ^(?:www\.)?(example)\.com$ [NC] 
RewriteRule .* somefolder/%1/$0 [L] 

# handle any sub.example.com 
RewriteCond %{ENV:REDIRECT_STATUS} ^$ 
RewriteCond %{HTTP_HOST} ^([^.]+)\.(example)\.com$ [NC] 
RewriteRule .* somefolder/%2/%1/$0 [L] 
+0

差不多完美!只有当我尝试访问子域网站时,“在此服务器上未找到请求的URL /somefolder/subname./”。显示。时期 。 '很重要。试图修改,但不能。 – klados

+0

对不起,我在第二条规则中犯了一个错误。现在就试试。 – anubhava

+1

这是答案。非常感谢! – klados

我想你应该修改服务器的设置,使域名根文件夹到你想要的东西。

+0

我没有验证来修改服务器端设置 – klados

+0

您正在使用cPanel吗?或xampp等? – Samson

+0

我的托管服务提供商没有许可这些功能。 – klados