【问题标题】:rewriting url to hide real page path重写 url 以隐藏真实页面路径
【发布时间】:2018-06-06 10:12:53
【问题描述】:

我最近在 SO 的帮助下解决了我的 htaccess rewriterule 问题:

Reuse subdomain in a rewrite rule

结果是当有人进入时

whatever.example.com/anypage

在地址栏中,htaccess 会自动重定向到

whatever.example.com/somepath/whatever/anypage

我想做的是找到一种方法,只在地址栏中显示whatever.example.com/anypage,并显示whatever.example.com/somepath/whatever/anypage的内容。

在我之前提到的帖子中,Jon Lin 清楚地提到了以下内容:

重定向总是会改变浏览器的 URL 地址栏中的内容

但是我知道一些非常常见的 url 重写案例会显示在地址栏中,例如:

example.com/article-1-15

但实际上显示的是

的内容
example.com/somepath/somepage.php?article=1&otherparam=15

这怎么可能适用于我的情况?我真的希望有一个小网址,但似乎我错过了一些东西。

【问题讨论】:

    标签: .htaccess url-rewriting


    【解决方案1】:

    你可以试试这样的:

    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_URI}  ^/([^/]+)$
    RewriteRule .*  http://whatever.example.com/somepath/whatever/%1 [L]
    

    它会映射:

    http://whatever.example.com/anypage

    到资源:

    http://whatever.example.com/somepath/whatever/anypage

    始终显示在浏览器的地址栏中:

    http://whatever.example.com/anypage

    更新

    如果任何东西是动态的并且在替换 URI 中是相同的,这里是另一个选项:

    RewriteEngine On
    RewriteBase /
    RewriteCond %{HTTP_HOST}  ([^/]+)\.example\.com.*
    RewriteCond %{REQUEST_URI}  ^/([^/]+)$
    RewriteRule .*  http://%1.example.com/somepath/%1/%2 [L]
    

    只要替换路径中的“whatever”都相同,这将起作用。如果不是,则必须对最后一个“whatever”进行硬编码,如下所示:

    RewriteRule .*  http://%1.example.com/somepath/whatever/%2 [L]
    

    没有其他方法,因为传入的 URL 没有它。

    【讨论】:

    • "whatever" 是动态的,你确定你的 htaccess 会这样做吗?
    • 嗯,确保它满足您需要的唯一方法就是对其进行测试。
    • 你看不到你的 htaccess 永远不会处理动态子域吗?也许我弄错了,但这似乎很明显,因为您在重写器中对其进行了硬编码
    • 规则试图做的是将最后一个文件夹/anypage 保留为最后一个文件夹。仅此而已,因此文件夹或子域的名称并不重要。
    • @Sebas 我明白你在评论中所说的话,所以我更新了我的答案。从你的问题中我没有看到它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-08
    • 1970-01-01
    • 2021-09-24
    • 2012-05-30
    • 2011-06-24
    • 2017-03-30
    • 2014-04-30
    相关资源
    最近更新 更多