使用AliasMatch和/或htaccess将URL重定向到子文件夹

时间:2014-01-23 10:17:13

标签: apache .htaccess mod-rewrite

我有以下设置,我的域名(假设abc.com)指向src

src
    index.php
    blog
        index.php

我想将来自 src / blog 文件夹的所有请求重定向到 abc.com/blog ,并从src文件夹中休息。 src和blog都有其他目录,并且都使用路由到index.php来提供页面。

问题是像 abc.com/blog/whatever 这样的网址会转到 src / index.php ,而它应该转到 blog / index.php 编辑 src / .htaccess 不起作用,因为我必须将请求定向到子目录。 以下是:

AliasMatch  /blog.* /path/to/blog

导致循环重定向: abc.com/blog/whatever/index.php/index.php/index.php ....

我按照这里的解释: http://www.apachelounge.com/viewtopic.php?t=1566

并且如果我们在别名target中提供目录路径,它会说Apache会添加index.php。

要求很简单:只需将所有博客/ *请求放在博客文件夹中,htaccess应该处理其余的

2 个答案:

答案 0 :(得分:0)

<Directory /usr/local/www/apache>
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} -s [OR]
    RewriteCond %{REQUEST_FILENAME} -l [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^.*$ - [NC,L]

    RewriteRule ^blog/.*$ /blog/index.php [NC,L]
    RewriteRule ^.*$ /index.php [NC,L]
</Directory>

我把它放在apache配置文件中。我扔掉了AliasMatch和.htaccess文件。

答案 1 :(得分:0)

/blog/.htaccess中尝试使用此规则作为第一条规则

RewriteRule ^(.*)$ /src/$1 [L]