2016-10-25 4 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, часто ни для чего. Они предусмотрены только в ситуации, когда не имеют доступ к конфигурации хоста (читайте: действительно дешевые хостинг-провайдеры), или если приложение должно написать свои собственные правила перезаписи (это кошмар безопасности в любом случае ...).

Смежные вопросы