【发布时间】:2017-09-26 21:52:05
【问题描述】:
我有一个这样的网址:
http://www.example.com/folder1/assets/Video/150/filename.mp4
我正在尝试像这样缩短它
http://www.example.com/challenge/Video/150/filename.mp4
我当前的.htaccess 实现是这样的:
RewriteEngine on
RewriteRule ^/challenge/Video$ /folder1/assets/Video [L]
但它不起作用,任何帮助都会有所帮助,我已经尝试过我见过的其他变体,但显然,我做错了。
编辑 1)
为了帮助提供更多信息:用户将视频上传到服务器,然后用户就可以从服务器查看/观看用户提交的视频。当用户提交视频时,网址为:
http://www.example.com/folder1/assets/Video/150/filename.mp4
当用户检索视频时,我希望他们得到这个 URL http://www.example.com/challenge/Video/150/filename.mp4
隐藏实际的文件路径/目录。
编辑 2)
我刚刚从@arkascha 建议的更改结果中添加了一张图片,在修复了 PHP 错误之后,当我将 [END] 更改为 [L] 时,我得到了这个,当我使用 [END] 时,我得到一个500 错误:
编辑 3) 这是我的完整 HTACCESS 代码:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^([^\.]+)\.example\.com
RewriteCond /var/www/example.com/%1 -d
RewriteCond %{ENV:REDIRECT_STATUS} =""
RewriteRule ^(.*)$ /%1/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
RewriteRule ^/?challenge/Video/(\d+)/(.+)$
\/WebServices/assets/Video/$1/$2 [L]
当我删除上面的所有内容并只留下您给我的重写代码时,它可以工作,但是,我确定我可能需要其中一些。因此,如果有人可以帮助我了解是哪一行导致它变得有趣。我认为是:
RewriteRule ^(.*)$ index.php?/$1 [L]
但我不是 100% 确定。谢谢
【问题讨论】:
标签: php apache .htaccess mod-rewrite