.htaccess 如何将htaccess mod重写php到mp4?

.htaccess 如何将htaccess mod重写php到mp4?,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,我需要对我正在进行的项目进行htaccess更改。虽然我对这个课题了解不多,但我想说的是我做了一些实验 这是一个原始链接: www.example.com/media/14352/100/100/title-abc.php 重写规则链接: www.example.com/title-abc.mp4 动态标题 或 www.example.com/media/14352/100/100/title-abc.php www.example.com/media/14352/100/100/title-a

我需要对我正在进行的项目进行htaccess更改。虽然我对这个课题了解不多,但我想说的是我做了一些实验

这是一个原始链接:

www.example.com/media/14352/100/100/title-abc.php

重写规则链接:

www.example.com/title-abc.mp4

动态标题

www.example.com/media/14352/100/100/title-abc.php

www.example.com/media/14352/100/100/title-abc.mp4

大胆的是动态


实现您的要求的规则是:

RewriteEngine on
RewriteRule ^/?(.+)\.mp4$ /media/14352/100/100/$1.php [END]
我不知道这是否真的解决了你的想法。。。服务器端文件系统中明显使用的文件夹层次结构是硬编码到上述规则中的。无法从传入的请求中神奇地猜出它们。所以,如果这是一个静态路径,您使用的一切都是好的。但是,如果您在目标中需要不同的路径,这取决于实际的请求,那么您需要寻找另一种策略。在这种情况下,我建议使用一个路由脚本,它提供了更多的选项

如果您使用上述规则收到一个内部服务器错误(http状态500),那么很可能您操作的是非常旧版本的apache http服务器。在这种情况下,您将在http服务器错误日志文件中看到不支持的
[END]
标志的明确提示。您可以尝试升级或使用较旧的
[L]
标志,在这种情况下可能也会使用相同的标志,不过这取决于您的设置

此规则同样适用于http服务器主机配置或动态配置文件(“.htaccess”文件)中。显然,重写模块需要在http服务器中加载,并在http主机中启用。在使用动态配置文件的情况下,您需要注意在主机配置中启用该文件的解释,并且该文件位于主机的
DOCUMENT\u ROOT
文件夹中

还有一个一般性的注释:您应该总是更喜欢将这些规则放在http服务器主机配置中,而不是使用动态配置文件(“.htaccess”)。这些动态配置文件增加了复杂性,通常是导致意外行为的原因,难以调试,而且它们确实降低了http服务器的速度。只有在您无法访问真正的http服务器主机配置(读:真正廉价的服务提供商)或坚持编写自己的规则的应用程序(这显然是一个安全噩梦)的情况下,才提供它们作为最后一个选项

更新:

这是上述规则的一个变体,它依赖于作为请求URL一部分的路径,因此只“更改”URL中的“文件扩展名”(为什么需要这样的扩展名?)


让我看看我是否理解这一点:如果用户访问
www.example.com/title abc.mp4
,您想打开文件
www.example.com/media/14352/100/100/title abc.php
?@Azer是的,仅此而已。我有godaddy standart wordpress主机。但这条规则不起作用。是的,也许这很难,但我也可以试着换一下分机;www.example.com/media/14352/100/100/title-abc.php www.example.com/media/14352/100/100/title-abc.mp4“不工作”的真正含义是什么?当然,这条规则确实有效。我想你的意思是,它不能解决你的想法,因为它不能神奇地猜测文件夹层次结构?或者,您的意思是请求由于错误而失败?我在答案中添加了一个更新,修改了规则的版本,实现了您现在在评论中建议的内容…我仍然不理解您为什么需要“文件扩展名”,即使考虑到您奇怪的头重定向想法。。。但不管怎样,正如前面所说的:这些规则确实有效。问题是为什么他们在你的特定情况下失败。你读了我写的关于
END
标志的内容了吗?你查过了吗?您是否检查了http服务器的错误日志文件以了解实际发生的情况?htacass文件有一个
重写规则/index.php[L]
rule我删除了这个规则,使之适用于您的规则。但是404所有的wordpress页面。我需要一个多规则:/dynamic configuration file(“.htaccess”)中的规则是从上到下处理的,因此规则的顺序很重要。注意在顶部放置更具体的规则,在底部放置更一般的规则。因此,在这里,您需要在通用索引规则之前实现媒体重写规则。
RewriteEngine on
RewriteRule ^/?(.+)\.mp4$ /media/14352/100/100/$1.php [END]
RewriteEngine on
RewriteRule ^/?media/(.+)\.mp4$ /media/$1.php [END]