【问题标题】:How to rewrite url in htaccess to hide subfolder?如何在 htaccess 中重写 url 以隐藏子文件夹?
【发布时间】:2021-05-16 20:00:03
【问题描述】:

我的网站位于我的 public_html 文件夹的子文件夹 (gng2) 中。 public_html/.htaccess 文件中的以下代码可以正常工作,因为键入我的域会从子目录中正确加载网站:

## redirect to subfolder containing the  app.
RewriteCond %{HTTP_HOST} ^example.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteCond %{REQUEST_URI} !gng2/
RewriteRule (.*) /gng2/$1 [L]

我的问题是www.example.com/gng2/whateverpage 也有效。我想将这些 url 重写/重新路由到 www.example.com/whateverpage,这样“gng2”子文件夹就不会出现在例如 Google Analytics 结果中。

我应该如何修改上面的代码来实现这个?

谢谢, W.

【问题讨论】:

    标签: .htaccess url-rewriting


    【解决方案1】:

    您可以在gng2/.htaccess 中使用此重定向规则从所有网址中删除/gng2/

    RewriteEngine On
    
    RewriteCond %{THE_REQUEST} \s/+gng2/(\S*) [NC]
    RewriteRule ^ /%1 [L,R=301,NE]
    
    # other rules appear below this line
    

    【讨论】:

    • 您的意思是我应该将我的 .htaccess 文件从 public_html 移动到 public_html/ng2 文件夹吗?或者我应该在 gng2 子文件夹中创建第二个 .htaccess 文件,其中只有这些条目?为什么我不能将所有条目都放在 public_html/.htaccess 文件中?谢谢!
    • 谢谢!我修改了我的 public_html/.htaccess 如下,但即使在清除缓存后它也不会重写 url。任何想法? ## 重定向到包含 gng2 应用程序的子文件夹。 RewriteCond %{THE_REQUEST} \s/+gng2/(\S*) [NC] RewriteRule ^ /%1 [L,R=301,NE] RewriteCond %{HTTP_HOST} ^example.com$ [NC,OR] RewriteCond % {HTTP_HOST} ^www.example.com$ RewriteCond %{REQUEST_URI} !gng2/ RewriteRule (.*) /ngg2/$1 [L]
    • 请看下面我要重写的 URL 示例:gonativeguide.com/gng2/en/tours/hungary/Budapest 我使用工具:htaccess.madewithlove.be 使用此 URL 测试我的 htaccess 内容,它说您建议的条件不是遇见...
    • madewithlove.be 对于测试重写规则毫无用处。它甚至不支持THE_REQUEST。最好的测试地点是本地 apache。
    • 我刚刚检查过您使用的是 server: nginx 而不是 Apache。 nginx 不支持所有 mod_rewrite 规则。最好看看 nginx 文档
    【解决方案2】:

    请将您的 htaccess 文件保存在 gng2 文件夹中,并尝试在您的 htaccess 规则文件中遵循以下规则。请确保这些规则位于您文件的顶部(用于将 http/HTTPS 应用于 URL,以防您有更多规则),另外请在测试您的 URL 之前清除浏览器缓存。

    RewriteEngine ON
    ## redirect to subfolder containing the  app.
    RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ [NC]
    ##Place your RewriteRule here.....
    

    【讨论】:

    • 你能解释一下为什么我需要将我的 .htaccess 文件移动到 public_html/ng2 文件夹吗?我不能简单地将这些条目添加到 public_html/.htaccess 文件中现有条目的顶部吗?谢谢!
    猜你喜欢
    • 2014-06-05
    • 2014-01-25
    • 2016-02-28
    • 1970-01-01
    • 1970-01-01
    • 2015-09-12
    • 2015-04-09
    • 2018-09-18
    • 2016-10-03
    相关资源
    最近更新 更多