在地址栏中显示时跳过路径中的文件夹名称

Posted

技术标签:

【中文标题】在地址栏中显示时跳过路径中的文件夹名称【英文标题】:skip a folder name in path while displaying in address bar 【发布时间】:2011-09-11 06:06:12 【问题描述】:

我希望文件夹名称不在地址栏中显示。示例:隐藏“成员”文件夹:

www.mysite.com/members/jonesmith/index.php

www.mysite.com/members/tome/index.php

www.mysite.com/members/jerry/index.php

...等

我想把这些链接像这样:

www.mysite.com/jonesmith/index.php

www.mysite.com//tome/index.php

www.mysite.com/jerry/index.php

...等

当点击链接时,地址栏将显示相同,即没有“成员”。

我需要这个使成员的页面或网址短。

当然,在会员页面内点击的任何链接都不会在地址栏中显示“会员”。

简而言之:“members”文件夹存在,但不会对所有级别的访问者可见。

有任何使用 php 脚本、javascript、.htaccess ..etc 的想法吗?

【问题讨论】:

只要你不链接它,它就不会显示在地址栏中。有什么复杂的? 【参考方案1】:

您可以将 .htaccess 与 mod_rewrite 结合使用,通过在 URL 前添加 /members 来重写 URL。

Options FollowSymLinks
RewriteEngine On

RewriteBase /~user

RewriteCond %REQUEST_URI !/~user/members/
RewriteRule ^(.*)$ /~user/members/$1 [L]

我想为您的设置删除 ~user 可能会起作用,但我的测试会重写 /~user/a/image.gif -> /~user/members/a/image.gif 之类的路径。

也许更完整的解决方案在以下线程中,如果有人提供包含它的 URL,它会添加一些规则以删除隐藏的子目录: http://www.webmasterworld.com/apache/3588649.htm

【讨论】:

【参考方案2】:

如果您使用 Apache,您可以为此使用 mod_rewrite 模块。

http://httpd.apache.org/docs/current/rewrite/

我确信 IIS 支持类似的东西。

【讨论】:

以上是关于在地址栏中显示时跳过路径中的文件夹名称的主要内容,如果未能解决你的问题,请参考以下文章

运行 streamlit 时如何在地址栏中显示 URL?

如何从地址栏中删除设计资源名称

如何删除 URL 中的参数并将其显示在地址栏中而不会导致 Javascript 中的重定向?

如何在每个页面的地址栏中保持相同的 url?

java获取当前浏览器地址栏中的参数

更改地址栏中的完整 URL,无需重新加载页面