未指定Apache重定向域到文件夹

时间:2013-03-27 07:53:45

标签: mod-rewrite url-rewriting apache2 httpd.conf

如果未在网址请求中指定子文件夹,我需要将我的域重定向到子文件夹。

例如。

a)如果请求来自“domian.com”或“www.domain.com”,我想将其重定向到“www.domain.com/page”。

b)但是,如果请求来自“domain.com/page2”或“www.domain.com/page2”,我不希望将请求重定向到“www.domain.com/page”。< / p>

我一直在虚拟主机中尝试一些排列,但没有运气。以下是我的代码:

<VirtualHost *:80>
ServerName domain.com
ServerAlias www.domain.com

<Directory />
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
    <IfModule mod_rewrite.c>
      Options +FollowSymLinks
      Options +Indexes
      RewriteEngine On
      RewriteBase /
      RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com$
      RewriteCond %{REQUEST_URI} !^/$1
      RewriteRule ^(.*)$ /Page [L]
    </IfModule>
</Directory>

ProxyPreserveHost On
ProxyPass         /  http://www.domain.com:8080/
ProxyPassReverse  /  http://www.domain.com:8080/
</VirtualHost>

任何指针都会有所帮助。

2 个答案:

答案 0 :(得分:1)

您可以尝试这样做:

  RewriteEngine On
  RewriteBase /
  RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com [NC]
  RewriteCond %{REQUEST_URI} ^$   [NC]
  RewriteRule .* /Page [L]

答案 1 :(得分:0)

RewriteCond %{REQUEST_URI} !^/$1会排除每个请求,因此永远不会使用RewriteRule

如果您只想重写根目录,请改用特定的regular expression ^/$。您还必须将规则包装在适当的<Directory>中,因为所附的所有内容都适用于文件系统目录,不是 URL路径

<Directory /path/to/documentroot>
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com$
    RewriteRule ^$ /Page [L]
</Directory>