Mod重写隐藏文件夹

时间:2010-04-11 19:09:51

标签: apache url mod-rewrite

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

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

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

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

该文件夹总是需要隐藏。感谢

3 个答案:

答案 0 :(得分:12)

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

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

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

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

答案 1 :(得分: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中。

答案 2 :(得分:0)

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

#Options +FollowSymLinks
RewriteEngine On

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

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