2016-10-25 91 views
0

我更改了一個文件名,我想創建一個永久重定向(301)。Htaccess重定向單個文件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),後面是文件系統中文件的絕對路徑。

回答

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服務器,往往沒有。他們只爲而不是可以訪問主機配置(讀取:真正便宜的主機提供商)或應用程序需要編寫它自己的重寫規則(無論如何這是一個安全噩夢)提供的情況。