Apache 从替换.htaccess中URL的特殊字符中跳过给定的文件类型
为了添加一些规则,我在.htaccess文件中添加了一些规则。其中一条规则是替换如下示例中的特殊字符Apache 从替换.htaccess中URL的特殊字符中跳过给定的文件类型,apache,.htaccess,redirect,url-rewriting,rules,Apache,.htaccess,Redirect,Url Rewriting,Rules,为了添加一些规则,我在.htaccess文件中添加了一些规则。其中一条规则是替换如下示例中的特殊字符 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)û(.*)$ /path/$1u$2 [L,R=301] RewriteRule ^(.*)\s(.*)$ /path/$1-$2 [L,R=301] RewriteRule ^(.*)&(.*)$ /path/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)û(.*)$ /path/$1u$2 [L,R=301]
RewriteRule ^(.*)\s(.*)$ /path/$1-$2 [L,R=301]
RewriteRule ^(.*)&(.*)$ /path/$1-$2 [L,R=301]
RewriteRule ^(.*)_(.*)$ /path/$1-$2 [L,R=301]
RewriteRule ^(.*)%(.*)$ /path/$1-$2 [L,R=301]
如果请求URL具有.js、.css或任何其他给定扩展名,我希望此规则不适用
我尝试了两种解决方案,但仍然没有成功。下面是在类似问题中建议的一些代码
RewriteCond %{REQUEST_URI} !\.(?:css|js|jpe?g|gif|png)$ [NC]
RewriteCond %{REQUEST_URI} !(\.css|\.js|\.png|\.jpg|\.gif|robots\.txt)$ [NC]
如果有人能帮忙,我会很感激的
这是拉尼尔的一个重要观点
请记住,每个重写条件仅适用于
遵循规则。这意味着如果你有一大堆规则,你
我们必须重复这些条件。如果你真的不想那样做
出于某种原因,你可以在一开始就使用否定
你的规则
您需要添加另一个重写条件以排除具有特定文件名的请求
RewriteCond%{REQUEST\u URI}!\。(js|css)$
上述条件将针对特定文件类型进行验证,并使其生效
完整的代码将是
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !\.(js|css)$
RewriteRule ^(.*)û(.*)$ /path/$1u$2 [L,R=301]
RewriteRule ^(.*)\s(.*)$ /path/$1-$2 [L,R=301]
RewriteRule ^(.*)&(.*)$ /path/$1-$2 [L,R=301]
RewriteRule ^(.*)_(.*)$ /path/$1-$2 [L,R=301]
RewriteRule ^(.*)%(.*)$ /path/$1-$2 [L,R=301]
您可以使用类似的在线工具进行调试。试试这个
RewriteCond%{REQUEST\u FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写条件%{REQUEST\u URI}!\。(?:css | js)$[NC]
重写规则^(.*)ā(.*)$/path/$1u$2[L,R=301]
重写规则^(.*)s(.*)$/path/$1-$2[L,R=301]
重写规则^(.*)和(.*)$/path/$1-$2[L,R=301]
重写规则^(.*)(.*)$/path/$1-$2[L,R=301]
重写规则^(.*)%(.*)$/path/$1-$2[L,R=301]
试试这个
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RedirectMatch (.*)\.js$ %{HTTP_HOST}/$1.js
RedirectMatch (.*)\.css$ %{HTTP_HOST}/$1.css
RewriteRule ^(.*)û(.*)$ /path/$1u$2 [L,R=301]
RewriteRule ^(.*)\s(.*)$ /path/$1-$2 [L,R=301]
RewriteRule ^(.*)&(.*)$ /path/$1-$2 [L,R=301]
RewriteRule ^(.*)_(.*)$ /path/$1-$2 [L,R=301]
RewriteRule ^(.*)%(.*)$ /path/$1-$2 [L,R=301]
谢谢,这个测试工具非常有用。非常有用!谢谢