【问题标题】:.htaccess - Hiding a directory in the URL while preserving other files.htaccess - 在 URL 中隐藏目录,同时保留其他文件
【发布时间】:2013-07-12 14:27:10
【问题描述】:

我开发了一个巨大的工具工作室,每个工具在 /tools/ 文件夹中都有自己的目录。因此,如果您有一个名为 example 的工具,则 URL 将是 /studio-dir/tools/example/。

我试图从 URL 中隐藏 /tools/ 目录,同时确保 /tools/ 目录之外的其他文件仍然有效。例如,/index.php 文件和 /admin/ 目录应该保留。

我试过这个,但它只会导致所有内容都出现大量 404 错误。我知道这可能很糟糕,我很讨厌重写 URL。 :P

RewriteCond %{REQUEST_URI} !^/tools/
RewriteRule ^/?([^/]+)$ /tools/$1 [L]

如果你仍然困惑,我想要:

http://www.example.com/studio/tools/example/index.php

为了能够加载为:

http://www.example.com/studio/example/index.php

同时仍保留 /tools/ 目录,并允许加载 /tools/ 目录之外的其他文件。

这可能吗?

【问题讨论】:

    标签: .htaccess rewrite rule


    【解决方案1】:

    你需要这样的东西:

    <IfModule mod_rewrite.c>
        RewriteEngine on
        RewriteBase /
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule    /studio/(.*) /studio/tools/$1    [L]
     </IfModule>
    

    问题是如果请求的文件同时在工作室文件夹和工具文件夹中,它将无法工作。

    但是没有办法阻止这种情况,因为服务器永远不知道 URL 是指 /studio/tools/ 还是 /studio/

    编辑:您可以像这样从可见网址中删除 /tools/:

    <IfModule mod_rewrite.c>
        RewriteEngine on
        RewriteBase /
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule    /studio/(.*) /studio/tools/$1    [L]
        RewriteRule    /studio/tools/(.*) /studio/$1    [L,R=302]
     </IfModule>
    

    【讨论】:

    • 不错!创造奇迹。如果在 URL 中找到 /tools/,是否还有一种方法可以强制重定向删除?
    • 查看我的编辑。不过试试看,我不确定它是否会导致无限循环。
    • 它不会无限循环。它也不会重定向,大声笑。但是没关系,我按照您发布的原始规则进行了所有操作。 :)
    • @User3515241 那我劝你仔细阅读本指南,它将帮助你在未来提出更好的问题:stackoverflow.com/help/how-to-ask
    【解决方案2】:

    在这个例子中没有 404 但它只能隐藏一个目录

    RewriteEngine On
    RewriteBase /
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+dirname/([^\s]+) [NC]
    RewriteRule ^ %1 [R=301,L]
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule (?!^dirname/)^(.*)$ /dirname/$1 [L,NC]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-25
      • 1970-01-01
      • 2020-01-13
      • 2014-06-19
      • 2014-07-08
      相关资源
      最近更新 更多