使用.htaccess重定向会停止加载图像

时间:2011-02-23 15:21:00

标签: php regex apache

好的所以我想重定向以下内容:

  

http://www.example.org/tag/code

以下内容:

  

http://www.example.org/tag.php?tag=code

以下正则表达式是这个问题的一些答案的组合,它解决了这个问题:

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule (.+)/ $1.php [L,NC]
RewriteRule (.+)/(.+) $1?tag=$2 [L,NC]

但是现在,当我尝试从目录http://www.example.org/img/imagename.png内的服务器加载图像时。它给了我一个500 Internal Server Error,当检查日志时,我收到了这条消息:

  

[Wed Feb 23 12:27:27 2011] [错误]   [client xx.xx.xx.xx] mod_rewrite:   最大内部重定向数   到达。假设配置错误。   使用'RewriteOptions MaxRedirects'来   必要时增加限额。

有谁知道那里发生了什么?

由于

3 个答案:

答案 0 :(得分:3)

尝试:

RewriteRule (.+?)/(.+) $1.php?t=$2 [L,NC]

答案 1 :(得分:1)

RewriteRule上方添加以下两行:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

这些将告诉mod_rewrite忽略实际的文件和目录。这应该可以解决您的/ img /问题。

这些行不应该RewriteCond $1 (^/include/)

要修复/img文件夹,请尝试以下操作:

RewriteRule ^file/img/(.*)$ /img/$1 [L]

答案 2 :(得分:0)

你试过这个吗?

选项+ FollowSymLinks     RewriteEngine On

RewriteRule (.+)/(.+) $1.php?t=$2 [L,NC]
RewriteRule (.+)/ $1.php [L,NC]