mod_rewrite:重定向所有以 "/video/[anyfilename].mp4" 结尾的网址



很抱歉问了这个可能很无聊的问题,但我就是无法解决。

这是我当前的.htaces文件:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteRule ^_res/.*$ - [L] # all URLs beginning with "_res" are not changed.
# put new fancy rule doing what I want here...
RewriteRule . index.php [L] # all other URLs are redirected to index.php
</IfModule>

这很好用。它将除以"_res/"开头的URL外的所有URL重定向到index.php.

我现在需要的是,所有匹配"[anypath]/video/[anyfilename].mp4"的URL都将被重写为"content/[anypath][video/[aanyfilename].mp4"(这是该文件在服务器上的实际路径-我不能在这个共享的网络空间上使用x-sendfile,因此我需要将大文件的URL重写到它们的实际服务器位置,以避免php的fileread功能)。

根据我对这些重写规则的理解,我认为我必须把这个规则放在最后一个规则之前。

不幸的是,我的regexp专业知识实际上并不存在。

我认为应该这样做:

RewriteRule ^(.*)/video/(^/*).mp4$ content/$1/video/$2.mp4 [L]

regexp的意思应该是"以任意数量的任何字符开头,后跟"/video/",后跟任意数量的非"/"的任何字符,并以".mp4"结尾。

当我在最后一条规则之前将其插入.htaccess时,以"/video/myvid.mp4"结尾的url仍然会被重写为index.php.

你看我一头雾水。有什么建议吗?

提前感谢!

我想你想要:

RewriteCond %{REQUEST_URI} !^/content/
RewriteRule ^(.*)/video/([^/]+).mp4$ content/$1/video/$2.mp4 [L]

您希望将此规则添加到路由到index.php 的规则之上

最新更新