【问题标题】:Want to remove specific word from URL with rewrite and redirect to correct URL想要通过重写从 URL 中删除特定单词并重定向到正确的 URL
【发布时间】:2018-02-19 18:07:58
【问题描述】:

在我的 URL 中有一个包含我想从 URL 中删除的特定单词,但原始请求应该针对该特定单词。比如……

www.example.com/web/un

我想从 URL 中删除 web,所以它应该看起来像....

www.example.com/un & www.example.com/cn

但在后面它应该重定向到上面提到的原始 URL。

请帮我完成这项工作。

【问题讨论】:

    标签: apache mod-rewrite url-rewriting


    【解决方案1】:

    您可以使用 RewriteRule 。将以下规则添加到您的 server.config.htaccess

    RewriteEngine on
    
    #redirect /web/foobar to /foobar
    
    RewriteCond %{THE_REQUEST} /web/(.+)/?\sHTTP [NC]
     RewriteRule ^.*$ http://exmaple.com/%1 [L,R]
     # internally map /foobar to /web/foobar
     RewriteRule ^/?([^/]+)/?$ /web/$1 [L]
    

    这会将/web/foobar 重定向到/foobar,从您的网址中删除/web 段。

    【讨论】:

      【解决方案2】:

      这将保存变量%1/web/ 之后的所有内容,您可以在RevriteRule 之后使用它

      RewriteEngine on
      RewriteBase /
      
      #take care bellow you must use http://www... and not directly www...
      
      RewriteRule (.*) http://www.example.com/$1
      RewriteCond %{REQUEST_URI} ^/web/(.*)$
      RewriteRule (.*) /%1 [R=301,L]
      

      重定向 www.any_site.com/web/un , www.any_site.com/web/cn ... www.any_site.com/nn

      www.example.com/un , www.example.com/cn ... www.example.com/nn

      [R=301] 标志设置返回码以告知重定向是永久性的

      [L] 标志可防止将其他规则应用于此特定重写

      【讨论】:

      • 内部没有重定向
      • 我已经更新了我的答案(一些错误)。我已经尝试过了,效果很好。我认为这也为你工作
      猜你喜欢
      • 1970-01-01
      • 2012-08-04
      • 1970-01-01
      • 2012-09-27
      • 1970-01-01
      • 2013-09-08
      • 2017-05-02
      • 1970-01-01
      • 2013-06-28
      相关资源
      最近更新 更多