【问题标题】:Mod Rewrite Hide FolderMod重写隐藏文件夹
【发布时间】: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

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

【问题讨论】:

    标签: apache url mod-rewrite


    【解决方案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 中。

      【讨论】:

        猜你喜欢
        • 2015-04-06
        • 2013-04-02
        • 2012-05-30
        • 2019-03-18
        • 2012-09-22
        • 1970-01-01
        • 2010-11-02
        • 2012-08-23
        • 2015-09-12
        相关资源
        最近更新 更多