2012-12-30 79 views
1

我想重寫就像一個網址:URL重寫和mod_auth_token(Apache模塊)

我的目標: http://monsite.com/my_other_files/55e35373739efc04a34d408c7c28a7b9/50e084f6/my_video.mp4

我的真實路徑: http://monsite.com/my_files/55e35373739efc04a34d408c7c28a7b9/50e084f6/my_video.mp4

我的代碼在.htaccess

RewriteRule ^my_other_files/([a-zA-z0-9_-]/[a-zA-z0-9_-]/[a-zA-z0-9_-]*)$ 
    my_files/$1/$2/$3 [QSA,L] 

我該如何去做這件事?

回答

1

說實話,你快到了。

您需要領先於重寫規則/,你是不是允許每個路徑組件多個字符。

嘗試:

RewriteRule ^/my_other_files/([0-9a-f]+)/([0-9a-f]+)/([a-z0-9_.-]+)$ 
    /my_files/$1/$2/$3 [QSA,NC,L] 

我加[NC]到最後,所以,它是不​​區分大小寫,並添加.最後一組,因此它也將匹配像my_video.mp4

,它看起來你的路徑組件都是十六進制的,所以我簡化了一些。如果這不是對我而言一個準確的假設,試試這個來代替:

RewriteRule ^/my_other_files/([a-z0-9_-]+)/([a-z0-9_-]+)/([a-z0-9_.-]+)$ 
    /my_files/$1/$2/$3 [QSA,NC,L] 

在這兩種情況下,我增加了易讀性斷行;這不應該存在於你的實際規則中。

另一種方法就是在/my_other_files/接受任何和它重定向到/myfiles/,在這種情況下,你可以只使用這樣的規則:

RewriteRule ^/my_other_files/(.+)$ /my_files/$1 [QSA,NC,L] 

我希望你得到這個排序! :O)

+0

謝謝你的快速反應,但我有404錯誤我的鏈接 – pjfnew

+0

是'啓用mod_rewrite'?值得在這條規則上面加上'RewriteEngine on'並查看['mod_rewrite'文檔](http://httpd.apache.org/docs/current/rewrite/intro.html),我建議... –