htaccess重写导致500内部服务器错误

时间:2012-09-02 18:08:10

标签: .htaccess

我正在尝试使用htaccess为SLIR图像大小调整插件获取漂亮的网址。

我想重写如下内容:

重写之前:
本地主机/ IMG / 600x400 /滑块/ image.jpg的

重写后
本地主机/应用/公共/ SLIR / index.php的R = SLIR&安培; W = 600安培; H = 400&安培; I = IMG /滑块/ image.jpg的

但以下代码返回500内部服务器错误...

<IfModule mod_rewrite.c>

RewriteEngine On
RewriteBase /

RewriteRule ^(.*)/([0-9]{1,4})x([0-9]{1,4})/(.*)\.(gif|jpg|jpeg|png) application/public/slir/index.php?r=slir&w=$2&h=$3&i=$1/$4.$5 [NC,NE,QSA,L]

</IfModule>

请帮帮我......


更新

我认为这是文件权限问题... 所以我检查了所有相关的目录和文件,令人惊讶的是全部都是755/644 然后我直接检查了 /application/public/slir/index.php 。它无法访问。

我在同一个slir目录中创建了另一个名为 hello.php 的文件,并且可以访问 hello.php 。 然后我将SLIR目录移动到名为 public 的另一个文件夹。在这里, index.php hello.php 都可以访问。

之后,我将SLIR目录移回原来的脚本文件夹。在脚本文件夹中,可以访问 hello.php ,但无法访问 index.php
现在,两个文件具有相同的权限,并在同一个文件夹中..我不知道这里发生了什么...:/:/

有人请帮助我......

4 个答案:

答案 0 :(得分:1)

如果其他人正在考虑这个问题 - 我发现的问题是htaccess文件中的这两行:

php_value auto_prepend_file none

&安培;

php_value auto_append_file none

有些服务器不允许这样做。

将它们移动到我的php.ini文件为我解决了这个问题:

auto-prepend-file = none

auto-append-file = none

答案 1 :(得分:0)

这可能是因为您正在使用基于Windows的编辑器(如记事本)编辑.htaccess文件。记事本会在文件中添加一些您看不到的字符,但它们会混淆.htaccess。我建议使用像Notepad ++这样的编辑器并将模式设置为Unix,这样它就不会弄乱服务器.. 从技术上讲,这是因为Linux和Windows有不同类型的EOL(End Of Line),因此记事本会在每行的末尾添加一些字符以转到下一行,但Unix不会识别它们,因为它有它自己的EOL的类型..

答案 2 :(得分:0)

查询字符串中通常禁止斜杠,但您可以通过设置启用它们 AllowEncodedSlashes指令。

您可能还希望重写规则对斜杠使用百分比编码(即%2F),因此重写后: localhost/application/public/slir/index.php?r=slir&w=600&h=400&i=img%2Fslider%2Fimage.jpg

另见How do you configure apache php to accept slashes in query strings

答案 3 :(得分:0)

重复,措辞非常不同:

Has anyone used Smart Image Resizer on subdomain sites?

问题是子域......