繁体   English   中英

.htaccess重定向除css和javascript之外的所有扩展名

[英].htaccess redirect all extension except css and javascript

我有一个.htaccess文件,可以将任何扩展名重定向到非扩展名网址,并显示所请求的文件+ .php 它适用于(。*)部分条件。

当我输入domain.com/file.htmldomain.com/file.xml时,它会显示file.php ,而url看起来像domain.com/file

我只是想知道如何从表达式中删除像.js和.css这样的扩展。 我不想将它们重定向到任何其他php文件。

我尝试过这样的事情: (。*!。(js | css))而不是(。*),但我找不到一个有效的解决方案......

目前的代码是这样的:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

#
# to display the name.php file for any requested extension (.*)
#
RewriteRule ^(.*)\.(.*) $1\.php

#
# to hide all type of extensions (.*) of urls
#
RewriteCond %{THE_REQUEST} ^[A-Z]+\s.+\.(.*)\sHTTP/.+
RewriteRule ^(.+)\.php $1 [R=301,L]

#
# no extension url to php
#
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteCond %{REQUEST_URI} !/$
RewriteRule (.*) $1\.php [L]

</IfModule>

如果您的Apache版本支持它,您可以使用“负向前瞻”并编写第一个RewriteRule,如下所示:

RewriteRule ^(.*)\.(?!js|css)([^.]*)$ $1\.php

[^.]部分确保(.*)\\. 匹配一切直到最后. ,将负面前瞻“定位”在正确的位置。

重定向的主要思想是转发某些内容,当它不存在时,如果请求的网址不存在,重定向将仅起作用。 如果您有http://mysite.com/js/script.js文件,它将始终以正常文件打开该文件。

因此,在您的情况下,您不需要css和js文件的特定重定向,如果它们实际存在的话。

您可能需要做的是指出这些文件的完整路径。 例如:

等等...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM