url 被附加到重定向链接 htaccess

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]

我觉得我以前解决过这个问题,但我记不清当时是怎么解决的。有人有什么建议吗?

答案1

这是由于与正在执行的 mod_rewrite 指令发生冲突而导致的mod_aliasRedirect指令,尽管配置文件中的顺序看起来是这样的。不同的模块在请求期间执行的时间不同。因此,不建议混合使用来自两个模块的重定向。

具体来说,由于 可能不存在物理文件,因此RewriteRule触发了现有 ,并且正在内部重写为。然后,mod_alias触发,与匹配/linksresource.htmlboot.php?/linksresource.htmlRedirect/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]

相关内容