apache - 如何忽略 URL 末尾的 URL

标签 apache .htaccess ubuntu url mod-rewrite

我有一个网址

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]

最佳答案

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

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]

关于apache - 如何忽略 URL 末尾的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65532540/

相关文章:

haskell - 无法 cabal 安装 hs3(对于 haskell-supercollider)

php - Google Chrome 强制下载 PHP 脚本的源代码

Apache HTTP 客户端 javax.net.ssl.SSLPeerUnverifiedException : peer not authenticated

wordpress - 我在 wordpress 中遇到混合内容错误

linux - ubuntu 14.04.4 LTS 中的 vncserver bash 脚本错误

ubuntu - 在 Ubuntu 12.04 上配置 clamdscan 以扫描系统上的所有文件

php - HTTP 转发 PLAINTEXT 警告

php - htaccess 中的 AddType 导致下载或 HTTP ERROR 500

.htaccess 在某些网址上强制使用 https,否则强制使用 http

.htaccess 重定向到子文件夹(屏蔽)