2010-04-11 63 views
8

我认为这是一个非常简单的问题。Mod重写隐藏文件夹

你是如何重写apache以隐藏文件夹的。

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

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

该文件夹需要一直隐藏。谢谢

回答

12

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

确保apache mod_rewrite模块已安装。然后,用在你的Apache配置是这样的,虚拟主机配置,或(不太理想).htaccess文件:

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

规则使用正则表达式,所以你可能想看看关于这个问题,如果参考你不确定。阅读manual以获取关于其他指令(RewriteCond可能非常有用)或规则选项的更多信息。

0

如果您的例子实际上反映了你所需要的文件,然后在你的.htaccess文件:

#Options +FollowSymLinks 
RewriteEngine On 

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

此外,如果目录具有读取权限,它不能在现实中“隐藏”。我假设你的意思是它不再出现在网址中。

+1

这也是我最初的样子。但这意味着用户会在地址栏中看到/pages/home.php,而服务器会提供/home.php。重新思考后,我认为OP想要相反... – grossvogel 2010-04-11 19:35:31

+0

@grossvogel - 你是对的 - 我更仔细地重读他的问题。 – TMG 2010-04-11 21:18:35

8

我知道这里的原始文章来自几年前,但它已经在搜索引擎中首先出现,所以也许这将帮助其他人寻找在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任何请求到在根目录域的subfoldername目录,子文件夹名称将不会出现在URL中。