RewriteRule 到绝对路径?

问题描述 投票:0回答:2

我正在尝试使

RewriteRule
重定向到服务器上当前目录之外的绝对路径。这在 PHP 中正确实现时有效(即没有权限问题),但对于
.htaccess
,它不会:

RewriteEngine On
RewriteRule ^files/(.*)$ /var/www/files/html/$2

不过,这是一个例子。想象一下这个 .htaccess 文件位于

/var/www/downloads/html
并重定向到其他位置。就像我说的,这是一个例子,在这种情况下没有意义。

我认为这可能不起作用,因为它重定向到

/var/www/files/html/var/www/downloads/html

问题: 如何让RewriteRule指向当前目录之外的目录?

更新:该站点的虚拟主机是:

<VirtualHost *:80>
    ServerName subdomain.domain.com
    DocumentRoot /var/www/files/html
</VirtualHost>
.htaccess mod-rewrite redirect url-rewriting apache2
2个回答
1
投票

您可以将

DocumentRoot
更改为
/var/www
并将您的 .htaccess 放在那里。规则可能看起来像

RewriteRule ^files/(.*)$ /downloads/html/$1

但是,

/var/www
以下的所有内容都将公开访问。如果这不是一个选项(例如安全问题),您必须坚持使用您的 PHP 解决方案。


0
投票

在 ServerConfiguration 中为指定的 VHost 添加 RewriteRules,你会看到它起作用了。这似乎是 mod_rewrite 或 Apache 中的一项安全功能。如果规则是在目录上下文(.htaccess 文件)中定义的,则不能在 DocumentRoot 之外设置路径。在这种情况下,路径替换将有所不同。

© www.soinside.com 2019 - 2024. All rights reserved.