Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.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 重写公共资产以忽略文件扩展名_.htaccess_Mod Rewrite_Url Rewriting_Assets_Clean Urls - Fatal编程技术网

.htaccess 重写公共资产以忽略文件扩展名

.htaccess 重写公共资产以忽略文件扩展名,.htaccess,mod-rewrite,url-rewriting,assets,clean-urls,.htaccess,Mod Rewrite,Url Rewriting,Assets,Clean Urls,出于形式上的考虑,我想修剪我的资产URI,以便省略文件扩展名 例如,如果我请求/resources/stylesheets/common,Apache将返回/resources/stylesheets/common.css。目前,我正在使用以下重写来实现这一点: RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_URI}.css -f RewriteRule ^ /%{REQUEST_URI}.css [L] 这是应该的。但是,我还需要为其他资源(如图像和脚本)执行

出于形式上的考虑,我想修剪我的资产URI,以便省略文件扩展名

例如,如果我请求
/resources/stylesheets/common
,Apache将返回
/resources/stylesheets/common.css
。目前,我正在使用以下重写来实现这一点:

RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_URI}.css -f
RewriteRule ^ /%{REQUEST_URI}.css [L]
这是应该的。但是,我还需要为其他资源(如图像和脚本)执行此操作。为了简单起见,我希望避免对每种类型的资源重复这种方法

问题:我可以用什么方法在一条规则中实现这一点?我在想这样的事情(尽管这行不通,我也明白为什么——也许Apache不喜欢猜测工作):


Mike,也许这有帮助:
%{REQUEST\u URI}
变量有一个前导斜杠,不需要再添加一个。此组合
%{DOCUMENT\u ROOT}%{REQUEST\u URI}
%{REQUEST\u FILENAME}
变量具有相同的系统路径。最后,TestString只能包含变量和纯文本,不能包含正则表达式,正如您已经知道的。为了检查文件是否存在,我认为需要几个
RewriteCond%{REQUEST\u FILENAME}.ext-f[OR]
。它可以工作,但是(找到的)扩展无法传递给规则。因此,IMO需要几条规则,每种文件类型一条。谢谢,我想这看起来是最严格的了。可惜。。。(这看起来更像是一个答案,它只是一个评论…)当然,你网站的访问者从来没有注意到样式表或图像的路径,只有你的页面。你真的需要隐藏非页面请求的扩展吗?这不是一个公共站点,它是一个私人应用程序。
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_URI}.(css|js|png) -f
RewriteRule ^ /%{REQUEST_URI}.%1 [L]