【问题标题】:How to ignore URL at the end of URL如何忽略 URL 末尾的 URL
【发布时间】:2021-04-08 11:12:42
【问题描述】:

我有一个网址

original: https://www.example.com/video/12345/name-of-the-video/

有时用户或网络爬虫会以不同的方式编写 URL:

https://www.example.com/video/12345/name-of-the-video/65485/

https://www.example.com/video/12345/

https://www.example.com/12345/

我希望所有 3 个 URL 都重定向(转发)到原始 URL:

https://www.example.com/video/12345/name-of-the-video/

我当前的 htaccess 规则是:

RewriteRule ^video/([0-9]+)/([^/]+)/$      view_video.php?id=$1&dir=$2 [L,QSA]
RewriteRule ^video/([0-9]+)/$              view_video.php?id=$1&dir=fake [L,QSA]

【问题讨论】:

    标签: apache .htaccess ubuntu url mod-rewrite


    【解决方案1】:

    您能否尝试以下,根据您显示的示例编写。请确保在测试 URL 之前清除浏览器缓存。

    RewriteEngine ON
    ##To rewrite URL https://www.example.com/12345/
    RewriteRule ^([0-9]+)/?$ view_video.php?id=$1&dir=fake [NC,L]
    
    ##To rewrite URL https://www.example.com/video/12345/
    RewriteRule ^video/([0-9]+)/?$ view_video.php?id=$1&dir=fake [NC,L]
    
    ##To rewrite URL https://www.example.com/video/12345/name-of-the-video/65485/
    RewriteRule ^video/([0-9]+)/([\w-]+)/[0-9]+/?$ view_video.php?id=$1&dir=$2 [R=301,NC]
    RewriteCond %{REQUEST_URI} ^/view_video\.php [NC]
    RewriteCond %{QUERY_STRING} id=([^&]*)&dir=(.*) [NC]
    RewriteRule ^(.*) video/%1/%2 [R=301,L]
    
    ##To rewrite URL https://www.example.com/video/12345/name-of-the-video/
    RewriteRule ^video/([0-9]+)/([\w-]+)/?$ view_video.php?id=$1&dir=$2 [NC,L]
    

    【讨论】:

    • @Mitra,哦,好的,现在让我编辑我的解决方案,请给我 5 分钟左右,干杯。
    • @Mitra,您现在可以尝试一次,如果对您有帮助,请告诉我?
    • 我应该保留旧的
    • @Mitra,以我的拙见,这些看起来更好地照顾/,如果有任何疑问,请告诉我。
    猜你喜欢
    • 2023-03-29
    • 1970-01-01
    • 2014-01-03
    • 2019-06-14
    • 2017-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多