Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.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
.HTAccess - MyType重写一个带有中间通配符文件夹的文件路径的条件?_.htaccess_Mod Rewrite - Fatal编程技术网

.HTAccess - MyType重写一个带有中间通配符文件夹的文件路径的条件?

.HTAccess - MyType重写一个带有中间通配符文件夹的文件路径的条件?,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,我基本上希望能够浏览某个文件夹中的文件夹并查找匹配项。我认为一个例子是最简单的解释方法: 我希望能够访问domain.com/css/style.css 甚至domain.com/[modulename]/css/style.css(现在我想这可能有助于使事情更有条理) 但是文件位于/application/modules/[modulename]/public/css/style.css中,[modulename]每次都可能不同 我有改写第二%{Debug 1 } /应用程序/模块/ $ $f

我基本上希望能够浏览某个文件夹中的文件夹并查找匹配项。我认为一个例子是最简单的解释方法:

我希望能够访问
domain.com/css/style.css

甚至
domain.com/[modulename]/css/style.css
(现在我想这可能有助于使事情更有条理)

但是文件位于
/application/modules/[modulename]/public/css/style.css
中,[modulename]每次都可能不同

<>我有<代码>改写第二%{Debug 1 } /应用程序/模块/ $ $f/CODE >,但除非我使用URL<代码> /[模块名] /Pult/Css/Stury.CSS<代码>,否则我无法在路径中间寻找通配符(

)。
编辑:仔细想想,它必须是
domain.com[modulename]/css/style.css
,因为在整个网站中可能有不止一个
style.css

今天,我花了五个小时来处理它,我发现它工作正常:

RewriteCond %{REQUEST_URI} !^/application/modules/
RewriteRule ^([a-zA-Z0-9\-]+)/(.*)$ /application/modules/$1/public/$2
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} -f
RewriteRule ^(.*)$ %{DOCUMENT_ROOT}%{REQUEST_FILENAME} [NC,L]

今天,我花了五个小时的时间完成了这项工作:

RewriteCond %{REQUEST_URI} !^/application/modules/
RewriteRule ^([a-zA-Z0-9\-]+)/(.*)$ /application/modules/$1/public/$2
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} -f
RewriteRule ^(.*)$ %{DOCUMENT_ROOT}%{REQUEST_FILENAME} [NC,L]

理想情况下,我会有一些类似
/application/modules/$1/public/$2
——但我不是最擅长mod_重写的人。这里的主要问题是动态模块名文件夹。如果给定的css文件在多个文件夹中具有相同的名称,您如何知道它们属于该文件夹?但是,您可以使用
RewriteCond%{REQUEST_URI}(.*)/css/(.*\.css)$
获取文件名,因为您知道这可能会起什么作用
RewriteRule^(.*)/css/(.\.css)$/application/modules/$1/public/css/$2[L]
@Prix我需要它不仅仅是为了css-可能有js、pdf、图像等等-真的任何东西。我编辑了这个问题,这样url请求将需要模块名,从而消除了文件具有相同名称的可能性names@Prix另外,它是两个重写条件之一,因此单行重写规则不会将其删除:PIdeally,我有一些类似于
/application/modules/$1/public/$2
——但我不是最擅长修改的。这里的主要问题是动态模块名文件夹。如果给定的css文件在多个文件夹中具有相同的名称,您如何知道它们属于该文件夹?但是,您可以使用
RewriteCond%{REQUEST_URI}(.*)/css/(.*\.css)$
获取文件名,因为您知道这可能会起什么作用
RewriteRule^(.*)/css/(.\.css)$/application/modules/$1/public/css/$2[L]
@Prix我需要它不仅仅是为了css-可能有js、pdf、图像等等-真的任何东西。我编辑了这个问题,这样url请求将需要模块名,从而消除了文件具有相同名称的可能性names@Prix另外,它是两个重写秒中的一个,所以一行重写规则不会将其删除:P