Mod重写隐藏文件夹

Posted

技术标签:

【中文标题】Mod重写隐藏文件夹【英文标题】:Mod Rewrite Hide Folder 【发布时间】:2011-02-06 18:44:30 【问题描述】:

我认为这是一个非常简单的问题。

你如何通过 apache 重写来隐藏文件夹。

EX:www.website.com/pages/login.php 到 www.website.com/login.php

或 www.website.com/pages/home.php 到 www.website.com/home.php

该文件夹需要始终隐藏。谢谢

【问题讨论】:

【参考方案1】:

我假设您想要的是浏览器请求 /home.php 但服务器实际使用位于 /pages/home.php 的文件,对吗?如果是这样,这应该工作:

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

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

规则使用正则表达式,因此如果您不确定,可能需要查看有关该主题的参考。阅读manual 了解有关其他指令(RewriteCond 可能非常有用)或规则选项的更多信息。

【讨论】:

【参考方案2】:

如果您的示例确实反映了您需要的文件,那么在您的 .htaccess 文件中:

#Options +FollowSymLinks
RewriteEngine On

RewriteRule ^/pages/(.+)\.php $1\.php [NC, L]

此外,如果目录具有读取权限,则它实际上不能被“隐藏”。我假设您的意思是它不再出现在 url 中。

【讨论】:

我一开始也是这样。但这意味着用户会在地址栏中看到/pages/home.php,而服务器会提供/home.php。重新思考后,我认为OP想要相反的...... @grossvogel - 你是对的 - 我更仔细地重新阅读了他的问题。【参考方案3】:

我知道这里的原始帖子是几年前的,但它在搜索引擎中最先出现,所以这可能会帮助其他希望在 URL 中隐藏文件夹名称的人。

不完全是原始海报想要的,但大致相同。

RewriteCond %HTTP_HOST ^mydomainname\.com$ [OR]
RewriteCond %HTTP_HOST ^www\.mydomainname\.com$
RewriteCond %REQUEST_URI !^/subfoldername/
RewriteRule (.*) /subfoldername/$1

以上示例会将对 mydomainname.com 或 www.mydomainname.com 的任何请求重定向到域根目录中的子文件夹名目录,并且子文件夹名称不会出现在 URL 中。

【讨论】:

以上是关于Mod重写隐藏文件夹的主要内容,如果未能解决你的问题,请参考以下文章

ThinkPHP 下如何隐藏index.php

ThinkPHP 利用.htaccess文件的 Rewrite 规则隐藏URL中的 index.php

linux服务器中Apache隐藏index.php失败

thinkphp url重写

thinkphp中.htaccess文件的巧妙运用

.htaccess重写为https和隐藏的子文件夹