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重写隐藏文件夹的主要内容,如果未能解决你的问题,请参考以下文章