0

我正在尝试使用 htaccess 获取漂亮的 url,用于 SLIR 图像调整大小插件。

我想重写如下内容:

重写前:
localhost/img/600x400/slider/image.jpg

重写后
localhost/application/public/slir/index.php?r=slir&w=600&h=400&i=img/slider/image.jpg

但以下代码返回 500 Internal server error ...

<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.phphello.php都可以访问。

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

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

4

4 回答 4

1

万一其他人在看这个 - 我发现的问题是 htaccess 文件中的这两行:

php_value auto_prepend_file none

&

php_value auto_append_file none

有些服务器不允许它们。

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

auto-prepend-file = none

auto-append-file = none
于 2013-03-07T22:54:39.650 回答
0

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

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

另请参阅如何配置 apache php 以接受查询字符串中的斜杠

于 2012-09-02T18:18:56.540 回答
0

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

于 2012-09-02T18:17:28.233 回答
0

重复,措辞非常不同:

有人在子域网站上使用过 Smart Image Resizer 吗?

问题是子域...

于 2012-09-03T01:53:07.760 回答