我已经更改了文件名,我想要创建一个永久重定向(301)。
我的.htaccess文件位于子目录(http://example.com/js)中。
我想重定向http://example.com/js/oldfilename.js
转到http://example.com/js/newfilename.js
使用此代码,重定向工作:
RewriteEngine On
RewriteRule ^oldfilename.js$ newfilename.js [L]但是URL没有重写。当我将[L]更改为[L,R=301]时,URL会被重写,但会被破坏。重写的URL似乎是http主机(http://example.com),后面是文件系统中文件的绝对路径。
发布于 2016-10-25 09:22:14
您需要执行外部重定向,并指定重写的基础:
RewriteEngine On
RewriteBase "/path/to/files/"
RewriteRule ^oldfilename\.js$ newfilename.js [L,R=301]但是,在http主机配置中简单地定义一个Alias要容易得多:
Alias /path/to/oldfilename.js /path/to/newfilename.js通常,您应该总是倾向于将这样的规则放在真正的主机配置中,而不是使用.htaccess样式的文件。众所周知,这些文件容易出错,很难调试,而且它们确实减慢了http服务器的运行速度,通常是毫无意义的。它们只适用于无法访问主机配置的情况(阅读:非常便宜的托管提供程序),或者如果应用程序需要编写自己的重写规则(无论如何,这是一个安全噩梦.)。
https://stackoverflow.com/questions/40236096
复制相似问题