У меня есть URL

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 были перенаправлены (переадресованы) на оригинал:

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]

Ответы (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]

2022 WebDevInsider