Apache 使用.htaccess缩短url

Apache 使用.htaccess缩短url,apache,.htaccess,mod-rewrite,Apache,.htaccess,Mod Rewrite,我不知道。太多了。我想做的是缩短我的url。我在谷歌上搜索,找到了很多解决方案。仍然没有一个有效。对于exmaple,我的url是“example.com/video?id=12345/filename”。我想要一个像“example.com/video/12345/filename”这样的url。我已经在上尝试了这个重写引擎 RewriteRule^video video?id=$1[QSA]但它不起作用。请帮忙 这是我的.htaccess代码 Options+FollowSymLinks-多

我不知道。太多了。我想做的是缩短我的url。我在谷歌上搜索,找到了很多解决方案。仍然没有一个有效。
对于exmaple,我的url是“example.com/video?id=12345/filename”。我想要一个像“example.com/video/12345/filename”这样的url。我已经在
上尝试了这个
重写引擎
RewriteRule^video video?id=$1[QSA]


但它不起作用。请帮忙

这是我的.htaccess代码

Options+FollowSymLinks-多视图-索引

重新启动引擎

RewriteBase/

#remove.php;使用_请求防止无限循环

RewriteCond%{u请求}^GET\(.*)\.php\HTTP

重写规则(.*)php$$1[L,R=301]

RewriteRule^video/([0-9]+)/。+$video?id=$1[L,QSA]


RewriteRule^video/([0-9]+)/。+$video?id=$1[L,QSA]


errordocument404/index.php

我想这就是您要找的:

RewriteEngine on
RewriteRule ^video/([0-9]+)/(.+)$ video?id=$1/$2 [L,QSA]
但是,我建议您只需删除
文件名
,您不需要它来传递文件。因为您有一些数字ID,所以您肯定有某种形式的数据库来存储引用文件的物理位置。在这种情况下,必须将上述内容更改为:

RewriteEngine on
RewriteRule ^video/([0-9]+)/ video?id=$1 [L,QSA]

还有另一个一般性提示:如果可能,您应该始终希望将这些规则放入http服务器的真实主机配置中。如果您确实不可能使用
.htaccess
样式的文件,例如,因为您没有访问http服务器配置的权限,那么您应该只使用
.htaccess
样式的文件。原因是
.htaccess
风格的文件众所周知容易出错,存在安全风险,难以调试,并且会使服务器速度减慢

你的代码不起作用。你的建议很好。但是我不能删除文件名,因为这是搜索引擎优化所必需的。@Kiran我建议在内部重写中删除文件名。在外面任何地方都看不见。所以SEO不受影响。请注意,我没有更改匹配模式,它仍然匹配包含文件名的URL。@Kiran“不工作”是什么意思?什么都没发生?发生了重写?http服务器日志文件中有任何内容吗?宇宙会内爆吗?准确点。上面的规则集肯定会重写您作为示例发布的URL。因此,要么您使用的是另一个示例,要么您的设置错误。@Kiran我们需要这些额外的详细信息,请将它们添加到您的问题中:1。
.htaccess
样式文件的确切位置、项目中的文件系统布局、请求的确切URL、http服务器错误日志文件的结尾以及是否启用了对
.htaccess
样式文件的解释。我尝试了您的代码。但一切都没有改变。当我转到“example.com/video/123/filename”时,文件没有打开。这意味着有一些问题。