Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.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
Apache mod_rewrite使所有目录/子目录中的目录可用_Apache_.htaccess_Mod Rewrite - Fatal编程技术网

Apache mod_rewrite使所有目录/子目录中的目录可用

Apache mod_rewrite使所有目录/子目录中的目录可用,apache,.htaccess,mod-rewrite,Apache,.htaccess,Mod Rewrite,我想链接一个目录,如: /resources/IMG/ 到所有其他目录,如 /IMG/ would resolve to /resources/IMG/ 而且 /foo/IMG/bar/anything.img should resolve to /resources/IMG/bar/anything.img 使用.htaccess。我已经测试了几种方法,哪种方法最有效 编辑:解决方案 # Add trailing slash to any directory if not done so

我想链接一个目录,如:

/resources/IMG/
到所有其他目录,如

/IMG/ would resolve to /resources/IMG/
而且

/foo/IMG/bar/anything.img should resolve to /resources/IMG/bar/anything.img
使用.htaccess。我已经测试了几种方法,哪种方法最有效

编辑:解决方案

# Add trailing slash to any directory if not done so
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*[^/])$ /$1/ [R=301,L]


# MAP /resources/IMG/ to be avaible as /IMG/ from everywhere
RewriteCond %{REQUEST_URI} !^/resources/IMG/
RewriteRule ^(?:.*/IMG/)(.*)$ /resources/IMG/$1 [L]

处理/IMG(不带尾随斜杠)的最佳方法是首先映射它,然后添加斜杠,但由于它是301重定向,它将刷新请求的\u URI,url将为/resources/IMG/但如果总是添加尾随斜杠,它应该可以正常工作。

您可以使用此规则作为第一条规则:

DirectorySlash Off

# Add trailing slash to any directory if not done so
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !\.
RewriteRule ^(.*[^/])$ /$1/ [R=301,L]

RewriteCond %{REQUEST_URI} !^/resources/IMG [NC]
RewriteRule ^(?:.*?/)?(IMG(?:/.*)?)$ /resources/$1 [L,NC]

经过测试,似乎根本不起作用。我用/web/IMG/试过了,但我得到了一个“未找到”(404)命令,请确保这是您在.htaccess中的第一条规则。您可以将当前的.htaccess放在您的问题中。感谢您的帮助,我对当前代码做了一些更改,我感谢您的帮助,感谢您在
行的
重写引擎下方插入我的建议规则。我测试了当前代码,并在重写引擎打开后立即将其放入,但很遗憾,这会导致重定向循环,您知道出了什么问题吗?