Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php .htaccess从重写条件中排除图像_Php_Apache_.htaccess_Mod Rewrite_Url Rewriting - Fatal编程技术网

Php .htaccess从重写条件中排除图像

Php .htaccess从重写条件中排除图像,php,apache,.htaccess,mod-rewrite,url-rewriting,Php,Apache,.htaccess,Mod Rewrite,Url Rewriting,我一直试图从重写条件中排除png和jpg文件。目前,我有一组图片被呈现为破碎的图像。导致错误的原因是my.htaccess中的重写规则。该规则覆盖文件夹的URL,因此它将以不同的名称显示在URL中,而不是以/volley显示为jeepvolley。我试图去掉最后一部分,如果目录不存在,它会重定向到主页,但似乎没有任何效果。我还尝试将扩展名为png和jpg的文件从重写目录的重写块中排除 我假设我没有正确地实现排除。我的页面仍然可以正常加载,除了有损坏的图像。你能提供我在这个街区做错了什么的见解吗

我一直试图从重写条件中排除png和jpg文件。目前,我有一组图片被呈现为破碎的图像。导致错误的原因是my.htaccess中的重写规则。该规则覆盖文件夹的URL,因此它将以不同的名称显示在URL中,而不是以/volley显示为jeepvolley。我试图去掉最后一部分,如果目录不存在,它会重定向到主页,但似乎没有任何效果。我还尝试将扩展名为png和jpg的文件从重写目录的重写块中排除

我假设我没有正确地实现排除。我的页面仍然可以正常加载,除了有损坏的图像。你能提供我在这个街区做错了什么的见解吗

   <IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteCond %{REQUEST_URI} !(\.css|\.js|\.png|\.jpg|\.gif)$ [NC]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^JeepVolleyballChampionship(.*)$ /volley [L,QSA]
</IfModule>

重新启动发动机
重写cond%{REQUEST_URI}!(\.css\.js\.png\.jpg\.gif)$[NC]
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则^JeepVolleyball锦标赛(.*)$/截击[L,QSA]
此处提供了我的整个.htaccess:

#the non-existent JeepVolleyballChampionship folder leads to the volley folder without showing it or the extension


RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

DirectorySlash Off
RewriteEngine on  
#try to make it so that /volley/ is eliminated from folders and name changes but it is still under this structure
RewriteRule ^volley$ /volley/index.php [L,E=LOOP:1]

RewriteCond %{ENV:REDIRECT_LOOP} !1
RewriteRule ^volley/$ /volley [R=301,L]   

RewriteCond %{ENV:REDIRECT_LOOP} !1
RewriteRule ^volley/index.php$ /volley [R=301,L]     

#the non-existent JeepVolleyballChampionship folder leads to the volley folder without showing it or the extension
<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteCond %{REQUEST_URI} !(\.css|\.js|\.png|\.jpg|\.gif)$ [NC]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^JeepVolleyballChampionship(.*)$ /volley [L,QSA]
</IfModule>

#non-existent folder to default root
<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ / [L,QSA]
</IfModule>
#不存在的JeepVolleyBallChampionshion文件夹指向volley文件夹,但不显示该文件夹或扩展名
重新启动发动机
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_FILENAME}\.html-f
重写规则^(.*)$$1.html
重新启动发动机
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_FILENAME}\.php-f
重写规则^(.*)$$1.php
目录删除
重新启动发动机
#尝试将/volley/从文件夹和名称更改中删除,但它仍处于此结构下
重写规则^volley$/volley/index.php[L,E=LOOP:1]
重写cond%{ENV:REDIRECT_LOOP}!1.
重写规则^volley/$/volley[R=301,L]
重写cond%{ENV:REDIRECT_LOOP}!1.
重写规则^volley/index.php$/volley[R=301,L]
#不存在的JeepVolleyBallChampionshion文件夹指向volley文件夹,但不显示该文件夹或扩展名
重新启动发动机
重写cond%{REQUEST_URI}!(\.css\.js\.png\.jpg\.gif)$[NC]
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则^JeepVolleyball锦标赛(.*)$/截击[L,QSA]
#默认根目录下不存在的文件夹
重新启动发动机
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则^(.*)$/[L,QSA]

jpg和jpeg在这里被视为单独的扩展。在第3行添加jpeg。如果您的扩展名为“jpeg”,它可能会解决您的问题。 其内容如下:

RewriteCond %{REQUEST_URI} !(\.css|\.js|\.png|\.jpg|\.jpeg|\.gif)$ [NC]

您不应该多次输入“RewriteEngine on”,还需要注意规则的顺序。在我脑海中,我想你需要的是:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/volley /JeepVolleyballChampionship [R=301]
这个-f条件将防止图像被重写(以及所有其他文件),只要它们存在,这是排除所有现有文件(如js、css等)的标准方法


然后规则中的模式将只重写以/volley开头的URL,因此您不需要条件来匹配它——事实上,在条件之前检查规则模式,因此匹配比匹配所有内容然后检查条件更快。

实际上,我在排除行中包括了更多文件,但是我遇到问题的大多数文件都是扩展名.png。如果它对所有其他扩展名都能正常工作,那么通过与它们进行比较来检查.png文件的路径。