url被附加到redirect链接htaccess

在我的.htaccess文件中,每当我创build301redirect时,要被redirect的url被附加到要被redirect到的url。 例如:

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

将redirect到:

 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] 

我觉得我过去已经解决了这个问题,但我不记得我做了什么。 有没有人有什么build议?

这是与mod_rewrite指令冲突的结果,这些指令在mod_alias Redirect指令之前执行,尽pipeconfiguration文件中有明显的顺序。 请求期间不同的模块在不同的时间执行。 出于这个原因,不build议混合来自两个模块的redirect。

具体来说,现有的RewriteRule被触发,因为大概/linksresource.html不存在作为一个物理文件,并被内部重写为boot.php?/linksresource.html 。 然后, Redirect mod_alias然后触发,匹配/linksresource.html针对原始请求,并redirect到http://example.com/resources/?/linksresources.html – 从重写的请求中传递查询string。

由于您已经在使用mod_rewrite,所以您应该将mod_alias Redirect更改为等效的mod_rewrite RewriteRule

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