在Apache Rewrite中隐藏原始文件夹

时间:2018-08-23 09:36:09

标签: apache mod-rewrite url-rewriting

我在创建重写规则时遇到问题。

我们已经安装了Wordpress,并且需要同时处理静态和动态内容。

假设我们在/ support的wordpress中有一个页面,它是论坛,文档等的登录页面。

我们的文档是在wordpress之外生成的,我们希望可以从/ support / documentation中获得它。

我们将如何处理?我尝试了一些选择,最接近将文档添加到单独文件夹中的选项:

RewriteRule ^support/documentation(/.*)?$ /support-4-0/Documentation$1 [NC,L]

这里的问题是Apache仍然提供support-4-0文件夹,从而导致内容重复的问题。有没有更好的方法可以解决这个问题?

3 个答案:

答案 0 :(得分:1)

如果将support-4-0文件夹存储在站点的DocumentRoot文件夹之外的其他位置没有问题,则可以使用Alias功能。

来自Apache Documentation

  

Alias伪指令用于在URL和文件系统路径之间进行映射。这样就可以将不直接位于DocumentRoot下的内容用作Web文档树的一部分。

<VirtualHost *:80>

    DocumentRoot /var/www/domain.com/public_html

    # ...

    Alias /support/documentation /var/www/domain.com/support-4-0

    <Directory /var/www/domain.com/documentation>
        Options MultiViews Indexes Includes FollowSymLinks ExecCGI
        AllowOverride All
        Require all granted
        allow from all
    </Directory>

   # ...

</VirtualHost>

别名语法:

Alias "Map-This-URI" "To-This-System-Path"

您需要指定其他部分来覆盖别名的目的地。这是示例目录配置:

<Directory "Specified-System-Path">
    Options MultiViews Indexes Includes FollowSymLinks ExecCGI
    AllowOverride All
    Require all granted
    allow from all
</Directory>

PS:以上配置的参考目录树:

/
└─ var
   └─ www
      └─ domain.com
         ├─ public_html
         └─ support-4-0

答案 1 :(得分:0)

如果要停止用户访问support-4-0,可以将用户从该页面重定向到从support开始的新支持页面。

您可以在下面使用

RewriteRule ^support-4-0/(.*) http://websitename/support/$1 [R]

答案 2 :(得分:0)

确保已安装apache mod_rewrite模块。然后,在您的apache配置,虚拟主机配置或(不太理想的).htaccess文件中使用类似的内容:

  RewriteEngine On
RewriteRule ^/(.*)$   /pages/$1