Mod rewrite 使用mod_rewrite从子域重定向到maindomain

Mod rewrite 使用mod_rewrite从子域重定向到maindomain,mod-rewrite,subdomain,Mod Rewrite,Subdomain,我的问题是我有一个正在运行的子域(sub.mydomain.com)。sub已加载到mydomain.com/sub中 我想做的是将所有到sub.mydomain.com的请求重定向到mydomain.com 不知何故,当im进入子域时,我似乎无法访问根文件夹(主域)。我可以从mydomain.com/sub到mydomain.com使用它。但不是来自子域 当前我正在使用: 重新启动发动机 重写规则^(.*)/?$/home/web/webuser/$1[L] 访问sub.mydomain.

我的问题是我有一个正在运行的子域(sub.mydomain.com)。sub已加载到mydomain.com/sub中

我想做的是将所有到sub.mydomain.com的请求重定向到mydomain.com

不知何故,当im进入子域时,我似乎无法访问根文件夹(主域)。我可以从mydomain.com/sub到mydomain.com使用它。但不是来自子域

当前我正在使用:

重新启动发动机

重写规则^(.*)/?$/home/web/webuser/$1[L]

访问sub.mydomain.com时,我收到一个500内部服务器错误

从sub访问main是否有限制?(权利方面) 或者可能是另一种到达main的方式,可能类似(../$1)

谢谢

编辑: 我只能访问.htaccess。因此DocumentRoot不能在.htaccess文件中使用AFAIK。 符号链接呢?我真的不知道它是做什么的,但我假设它链接了两个位置?我找到的唯一一个启用符号链接的代码(选项+FollowSymlinks)-但是这一行没有说明要链接什么(也许我完全错了)


顺便说一句,感谢您迄今为止的投入

为什么不尝试使用mod_alias的重定向指令?

为什么不尝试使用mod_alias的重定向指令?

我必须承认我没有完全理解您的问题。是否要将所有内容从sub.mydomain.com/where重定向到mydomain.com/where?在这种情况下,以下操作(放在sub.mydomain.com的配置文件中)可能会起作用:

    RewriteEngine On
    RewriteRule ^/(.*)$ http://mydomain.com/$1 [R,L]
它在客户端重定向,这意味着用户将在浏览器中看到mydomain.com/sub


编辑:我想我现在明白你的问题了。是的,这是一个权限问题:如果您网站的DocumentRoot是/whater/sub,那么您不能通过向URL添加“/…”来访问/whater。我希望你明白这是件好事。:-)mod_rewrite只是更改URL,所以它也不能这样做

因此,要解决您的问题,您需要更改sub.mydomain.com的DocumentRoot,或者创建一个符号链接,允许您访问所需的目录(例如/whater/sub/redir target->/whater)。但是,请小心使用符号链接选项,因为它将在文件系统上创建无限长的有效目录(/whatever/sub/redir target/sub/redir target/…),而某些脚本无法处理此问题


EDIT2:您可能希望创建别名,而不是符号链接,例如:

Alias /redir-target /home/web/webuser

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/redir-target/.*$
RewriteRule ^/(.*)$ /redir-target/$1

不过,我认为最简单的解决办法是更改DocumentRoot…

我必须承认我没有完全理解您的问题。是否要将所有内容从sub.mydomain.com/where重定向到mydomain.com/where?在这种情况下,以下操作(放在sub.mydomain.com的配置文件中)可能会起作用:

    RewriteEngine On
    RewriteRule ^/(.*)$ http://mydomain.com/$1 [R,L]
它在客户端重定向,这意味着用户将在浏览器中看到mydomain.com/sub


编辑:我想我现在明白你的问题了。是的,这是一个权限问题:如果您网站的DocumentRoot是/whater/sub,那么您不能通过向URL添加“/…”来访问/whater。我希望你明白这是件好事。:-)mod_rewrite只是更改URL,所以它也不能这样做

因此,要解决您的问题,您需要更改sub.mydomain.com的DocumentRoot,或者创建一个符号链接,允许您访问所需的目录(例如/whater/sub/redir target->/whater)。但是,请小心使用符号链接选项,因为它将在文件系统上创建无限长的有效目录(/whatever/sub/redir target/sub/redir target/…),而某些脚本无法处理此问题


EDIT2:您可能希望创建别名,而不是符号链接,例如:

Alias /redir-target /home/web/webuser

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/redir-target/.*$
RewriteRule ^/(.*)$ /redir-target/$1

不过,我认为最简单的解决方案是更改DocumentRoot…

如果不了解更多关于服务器配置的信息,就很难提供明确的答案

以下可能有效,至少是一个不错的起点:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^sub\.mydomain\.com 
RewriteRule (.*) /$1 [L]

理想情况下,这将放在httpd.conf中,但可能从.htaccess文件中工作(同样,关于如何设置子域的更多信息将很有帮助)。

如果不了解更多关于服务器配置的信息,就很难提供明确的答案

以下可能有效,至少是一个不错的起点:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^sub\.mydomain\.com 
RewriteRule (.*) /$1 [L]

理想情况下,这将放在您的httpd.conf中,但可以从.htaccess文件中运行(同样,有关如何设置子域的更多信息将非常有用)。

我希望保留url(sub.mydomain.com)。当包含http时,它实际上会重定向,而不会在浏览器窗口中保留url。我希望保留url(sub.mydomain.com)。当包含http时,它实际上会重定向,而不会将url保留在浏览器窗口中。我不知道重定向指令-它实际上会重定向og吗?它像重写一样工作吗?我想把url(sub.mydomain.com)保存在浏览器地址栏中。啊,它实际上是重定向的。另一个选择是使用mod_别名,只需为你的子域创建一个别名到主文件夹。我不知道重定向指令-它是否真的重定向og它是否像重写一样工作?我想把url(sub.mydomain.com)保存在浏览器地址栏中。啊,它实际上是重定向的。然后,另一个选项是使用mod_alias,只在主文件夹中为您的子域创建一个别名。将sub.mydomain.com的DocumentRoot放在与mydomain.com相同的位置(或者将sub.mydomain.com配置部分全部删除,并将其作为服务器别名添加到mydomain.com的配置中)怎么样?符号链接是两个位置之间的文件系统级连接。您在计算机上有shell访问权限吗?将sub.mydomain.com的DocumentRoot放在与mydomain.com相同的位置(或者删除sub.mydomain.com配置部分并将其添加为一个服务)怎么样