對不起,這可能是非常小巧的風格的問題,但我不能讓它工作。mod_rewrite:重定向以「/video/[anyfilename].mp4」結尾的所有網址
這是我目前的.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」的URL都會被重寫爲「content/[anypath]/video/[anyfilename] .mp4」(這是實際的這個文件在服務器上的路徑 - 我不能在這個共享的網絡空間上使用x-sendfile,因此我需要將大文件URL重寫到它們的實際服務器位置,以避免php的文件讀取功能)。
從我對這些RewriteRules的理解中,我想我必須將這條規則放在最後一條之前。
不幸的是,我的正則表達式專業知識實際上並不存在。
我認爲應該工作是這樣的:
RewriteRule ^(.*)/video/(^/*)\.mp4$ content/$1/video/$2.mp4 [L]
的正則表達式應該意味着/視頻/‘然後是不屬於任何字符的任意量「與任何字符的任意金額,然後開始’ 「/」,並與名爲」 .mp4" 結尾。
當我最後的規則之前正確插入到這一點我的.htaccess,網址以‘/video/myvid.mp4’結尾仍重寫的index.php。
你看我無言以對呢?
非常感謝!
'(^/*)'並不意味着'比其他任何字符/ '。爲此,你的意思是做'([^ /] *)' –
謝謝,正則表達式讓我的腦海似乎有點過度... – Robert