[英].htaccess redirect all extension except css and javascript
我有一个.htaccess文件,可以将任何扩展名重定向到非扩展名网址,并显示所请求的文件名+ .php 。 它适用于(。*)部分条件。
当我输入domain.com/file.html或domain.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.