是什么导致我的重定向循环?

时间:2012-08-24 20:43:42

标签: regex apache .htaccess

我正在使用mod_rewrite为我正在处理的网站创建更漂亮的网址。但是,我的css和js文件夹正在引起重定向循环。

这是我的.htaccess中的内容

AddDefaultCharset On
AddDefaultCharset UTF-8
AddCharset UTF-8 .tpl
AddCharset UTF-8 .js
AddCharset UTF-8 .css
AddCharset UTF-8 .php

RewriteEngine On
RewriteBase /guildtree/
RewriteRule ^([a-zA-Z0-9_'-]+)/(.*)$        characters.php?realm=$1&name=$2     [NC]

我的CSS被重定向到

http://localhost/guildtree/css/error

我的JS被重定向到

http://localhost/guildtree/js/error

即使通往他们的路径是正确的,我的图像也会破碎。直接转到图像也会导致重定向循环。

http://localhost/guildtree/images/roster/error

是否有任何突出的原因导致这个循环?感谢。

更新

CSS和图片的问题已经解决。 JS仍然无法正常工作。

1 个答案:

答案 0 :(得分:1)

这不是重定向循环,您的图像可能会被characters.php路由捕获。在规则中添加一些排除项:

RewriteBase /guildtree/

RewriteCond %{REQUEST_URI} !\.(css|js|png|jpe?g|gif)$ [NC]
RewriteRule ^([a-zA-Z0-9_'-]+)/(.*)$        characters.php?realm=$1&name=$2     [NC]

此外,您可能遇到相对/绝对路径问题。如果您的链接是相对的,它们将被新路径更改,您需要添加:

<base href="/guildtree/">

或者所有相关链接的基本路径应该是什么。