.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