【问题标题】:Can I use HTACCESS to format this URL?我可以使用 HTACCESS 来格式化这个 URL 吗?
【发布时间】:2021-02-11 16:40:20
【问题描述】:

我想知道是否可以将https://site1.com/en/article-details.test-article?item=test 之类的 URL 格式化为 https://site1.com/en/article-details/test-article?item=test,所以基本上将 .test-article 更改为 /test-article

由于我的网站的工作方式,它仅将 .test-article 识别为有效选择器,因此阅读 https://httpd.apache.org/docs/2.4/rewrite/flags.html 似乎我可能需要使用 PT 标志向用户显示所需的 URL,但将正确的 URL 传递给我的网站。

到目前为止,我已经用这个来替换斜线的点

RewriteCond %{REQUEST_URI} ^/([a-z]{2})/article-details.([a-z]{2})(/?)$
RewriteRule ^/([a-z]{2})/.*  https://%{SERVER_NAME}/$1/$2 [L,NC,R=301]

编辑(这可以按照 RavinderSingh13 的建议格式化 URL)

RewriteEngine ON
RewriteCond %{REQUEST_URI} ^/([a-z]{2})/article-details.([^?]*)(/?)$
RewriteRule ^ https://%{SERVER_NAME}/%1/article-details/%2 [QSA,R=301,NE,L]

【问题讨论】:

    标签: apache .htaccess redirect mod-rewrite url-rewriting


    【解决方案1】:

    对于您显示的示例,您能否尝试以下操作。请确保在测试 URL 之前清除浏览器缓存。

    RewriteEngine ON
    RewriteCond %{THE_REQUEST} \s/(en/article-details)\.(test-article)\?item=test\s [NC]
    RewriteRule ^ https://site1.com/%1/%2 [QSA,R=301,NE,L]
    

    根据 OP 的 cmets 在此处添加更多通用规则:

    RewriteEngine ON
    RewriteCond %{THE_REQUEST} \s/(en/article-details)\.([^?]*)\?item=test\s [NC]
    RewriteRule ^ https://site1.com/%1/%2 [QSA,R=301,NE,L]
    

    【讨论】:

    • 真的,感谢您的帮助。你是救生员:)
    • @JPM,欢迎您,继续学习,继续分享欢呼。
    【解决方案2】:

    你可以试试这条规则作为你的最高规则:

    RewriteEngine On
    
    RewriteRule ^(.+)\.(test-article/?)$ /$1/$2 [R=302,NE,L,NC]
    

    测试此规则后将302 更改为301

    【讨论】:

      猜你喜欢
      • 2014-08-12
      • 2015-07-18
      • 2021-07-23
      • 1970-01-01
      • 2011-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多