很抱歉这可能是非常棒的问题,但我无法让它发挥作用。
这是我当前的.htacces文件:
<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 /”开头的所有网址重定向到index.php。
我现在需要的是所有匹配“[anypath] / video / [anyfilename] .mp4”的网址都会被重写为“content / [anypath] / video / [anyfilename] .mp4”(这是实际的路径)这个文件在服务器上 - 我不能在这个共享的Web空间上使用x-sendfile,因此我需要将大文件URL重写到它们的实际服务器位置,以避免php的文件读取功能。)
根据我对这些RewriteRules的理解,我认为我必须在最后一条规则之前放置此规则。
不幸的是,我的正则表达式专业知识几乎不存在。
我认为应该是这样的:
RewriteRule ^(.*)/video/(^/*)\.mp4$ content/$1/video/$2.mp4 [L]
正则表达式应表示“以任意数量的任何字符开头,后跟”/ video /“,后跟任何数量的非”/“且以”.mp4“结尾的字符。
当我在最后一条规则之前将其插入我的.htaccess时,以“/video/myvid.mp4”结尾的网址仍会被重写为index.php。
你看我一无所知。有什么建议吗?
提前多多谢谢!
答案 0 :(得分:1)
我想你想要:
RewriteCond %{REQUEST_URI} !^/content/
RewriteRule ^(.*)/video/([^/]+)\.mp4$ content/$1/video/$2.mp4 [L]
并且您希望将此规则添加到路由到index.php