我正在尝试使用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 。
现在,两个文件具有相同的权限,并在同一个文件夹中..我不知道这里发生了什么...:/:/
有人请帮助我......
答案 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)