具有子文件夹访问权限的htaccess子域

时间:2015-07-30 07:53:57

标签: php regex apache .htaccess mod-rewrite

我正在尝试使用.htaccess将子域请求重写到我服务器中的子文件夹。我希望mail.domain.com查看位于根目录中的mail文件夹。我可以使用以下代码实现此目的

RewriteEngine on
RewriteCond %{HTTP_HOST} mail.domain.com$
RewriteCond %{REQUEST_URI} !^/mail
RewriteRule ^(.*)$ /mail/$1 [L]

这可以正常工作。当我浏览mail.domain.com时,我会收到domain.com/mail/index.php的内容。

但是,这不适用于子域内的子文件夹。即,当我浏览mail.domain.com/installer时,它不会提供domain.com/mail/installer/index.php的内容。相反,它显示404错误。我还尝试了htaccess subdomain pointing的代码。不知怎的,我无法得到输出。该方法也给出了同样的问题。我做错了什么?

注意:

  1. 我不想要重定向条件。希望通过重写规则来实现。
  2. 我正在使用openshift服务器。创建了domain.com& mail.domain.com别名。
  3. 根文件夹包含wordpress,其中 no 低于.htaccess规则。
  4. 修改

    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </IfModule>
    

    当我删除上面的wordpress htaccess时,一切正常。因此它在子域子文件夹中导致404错误。请帮助我为wordpress漂亮网址和子网域子文件夹做些什么才能工作?

    注意:我真的很抱歉。 Wordpress通过网络界面添加了这个,我没注意到。

1 个答案:

答案 0 :(得分:1)

保持你的根.htaccess像这样:

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} =mail.domain.com
RewriteRule ^((?!mail).*)$ mail/$1 [L,NC]

RewriteRule ^(index\.php$|mail) - [L,NC]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]