Назад | Перейти на главную страницу

URL добавляется для перенаправления ссылки htaccess

В моем файле .htaccess всякий раз, когда я создаю перенаправление 301, URL-адрес, с которого нужно перенаправить, добавляется к URL-адресу, на который нужно перенаправить. Например:

Redirect /linksresources.html http://example.com/resources/

Перенаправит меня на:

http://example.com/resources/?/linksresources.html

Существующий файл .htaccess:

#404 Custom Error page
#ErrorDocument 404 /error_docs/404.php

#force IE out of compatibility mode
<FilesMatch "\.(htm|html|php)$">
    <IfModule mod_headers.c>
        BrowserMatch MSIE ie
        Header set X-UA-Compatible "IE=Edge,chrome=1"
    </IfModule>
</FilesMatch>

#Disable Indexing
Options -Indexes 


Order Deny,Allow
Allow from All




Redirect /linksresources.html http://example.com/resources/



RewriteEngine On
RewriteOptions inherit

#if request is not an existing file or directory then redirect to
#codeigniter boot.php file
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ boot.php?/$1 [L,QSA]

Мне кажется, что я уже решал эту проблему в прошлом, но я не могу вспомнить, что именно я сделал. У кого-нибудь есть предложения?

Это результат конфликта с вашими директивами mod_rewrite, которые выполняют перед mod_alias Redirect директиву, несмотря на очевидный порядок в вашем файле конфигурации. Во время запроса разные модули выполняются в разное время. По этой причине не рекомендуется смешивать редиректы от обоих модулей.

В частности, существующие RewriteRule срабатывает, поскольку предположительно /linksresource.html не существует как физический файл и внутренне переписывается на boot.php?/linksresource.html. Mod_alias Redirect затем срабатывает, соответствует /linksresource.html против исходный запрос и перенаправляет на http://example.com/resources/?/linksresources.html - передача строки запроса из перезаписанного запроса.

Поскольку вы уже используете mod_rewrite, вам следует изменить mod_alias Redirect эквивалентному mod_rewrite RewriteRule:

RewriteRule ^linksresources\.html$ http://example.com/resources/ [R=302,L]