Htaccess重定向单个文件301

时间:2016-10-25 09:20:38

标签: apache .htaccess redirect

我更改了文件名,我想创建永久重定向(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),后跟文件系统中文件的绝对路径。

1 个答案:

答案 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服务器的速度,通常一无所获。它们仅适用于可以访问主机配置(读取:非常便宜的托管服务提供商)或者应用程序需要编写自己的重写规则(无论如何都是安全噩梦)的情况。 ..)。