我更改了文件名,我想创建永久重定向(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似乎是http主机(http://example.com),后跟文件系统中文件的绝对路径。
答案 0 :(得分:0)
您需要执行外部重定向并指定重写基础:
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服务器的速度,通常一无所获。它们仅适用于不可以访问主机配置(读取:非常便宜的托管服务提供商)或者应用程序需要编写自己的重写规则(无论如何都是安全噩梦)的情况。 ..)。