【问题标题】:htaccess rewrite to shorten urlhtaccess 重写以缩短 url
【发布时间】:2014-08-04 13:33:59
【问题描述】:

我正在将 5 网站升级到更新版本,当新网站完成后,我将网站移动到子文件夹 v2。

现在的文件夹结构

\root\website1\ \根\网站2\ \根\网站3\ \root\website4\ \root\website5\

之后的文件夹结构 \root\v2\website1\ \root\v2\website2\ 等等……

当用户尝试访问该网站时,我已经在 htaccess 中创建了一个正在工作的重定向 www.example.com/website1,它被重定向到 www.example.com/v2/website1,最重要的部分是浏览器显示 www.example.com/website1 没有“v2”

RewriteRule ^website1/?(.*)$ /v2/website1/$1 [L,NC]

但我正在努力解决以下问题。当有人直接访问 www.example.com/v2/website1 时,浏览器显示 v2,我想隐藏它,所以我想知道是否有人知道我可以隐藏 v2 吗?

【问题讨论】:

    标签: apache .htaccess web


    【解决方案1】:

    尝试将此规则添加到您的 htaccess 文件中

    RewriteCond %{THE_REQUEST} \ /+v[0-9]+/
    RewriteRule ^v[0-9]+/(.*)$ /$1 [L,R=301]
    

    【讨论】:

    • 尊敬的 Jon Lin,添加规则不起作用,浏览器仍然显示 www.example.com/v2/website1
    • @desty_aya 如您所见,those rules work perfectly fine for me。您确定没有其他东西将 back 重定向到 /v2/ URL 吗?就像您访问的目录没有斜杠一样?
    • 我已经安装了一个 xampp 进行快速测试。当我转到 /root/v2/website1/ 时,它会重定向到 /root/website1,这很好。但问题是它要求文件实际上存在于 /root/website1 上,这不是我想要的
    • @desty_aya 您希望保留您已经拥有的规则,该规则在内部重写 /v2/ 路径。
    • 我的 htaccess 现在是 RewriteRule ^website1/?(.*)$ /v2/website1/$1 [L,NC] RewriteCond %{THE_REQUEST} \ /+v[0-9]+/ RewriteRule ^v[0-9]+/(.*)$ /$1 [L,R=301] 但是当我打开 www.example.com/v2/website1 时,它会尝试打开不存在的 /website1
    猜你喜欢
    • 1970-01-01
    • 2012-03-15
    • 1970-01-01
    • 2012-11-08
    • 2021-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多