奇怪的结尾斜杠问题

问题描述:

我在Apache服务器的document_root下有一个文件夹。 当我输入http://www.example.com/help时,它不会重定向到http://www.example.com/help/,但会转到http://www.exmaple.com//help/。请注意,域名后面有两个斜杠奇怪的结尾斜杠问题

我找不到为这种重定向设置的任何mod-rewrite规则。任何人都可以想到其他可能的原因吗?

此外,在Apache中,从http://www.example.com/help重定向到http://www.example.com/help/是由什么完成的? (注意'help'是真实的文件夹,并且没有名为'help'的文件)。

谢谢!

最后我发现这是Apache的一个bug。 https://issues.apache.org/bugzilla/show_bug.cgi?id=51982

第一个猜测是,您的应用程序配置中有一个用于其基本URL的项目,在您的情况下,它以/结尾,导致应用程序的内部路由系统添加额外的斜线。

回复评论者:

看看你的.htaccess文件。 如果它看起来是这样的(这是默认使用由WordPress安装了一个,顺便说一句):

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase/
    RewriteRule ^index\.php$ - [L] 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule . /index.php [L] 
</IfModule> 

然后,它会尝试从实际目录/help加载。 但是,如果它不包含!-f!-d行,它将通过应用程序入口点加载每个请求,无论请求的项目是否存在于文件系统中。

+0

谢谢。但它没有帮助。请注意,'help'是一个真正的文件夹,所以我们不应该期待任何重定向。 – 2012-04-04 02:56:57

+0

评论不能做新行?烦人...更新了最初的答案。 – Ariel 2012-04-04 03:04:57

+0

我认为“!-f”表示不是文件,“!-d”表示不是目录。 “帮助”是目录,因此不应用重写规则。无论如何,我们并没有使用WordPress。 – 2012-04-04 13:41:32