具有否定正则表达式条件的.htaccess中的RewriteCond不起作用

前端之家收集整理的这篇文章主要介绍了具有否定正则表达式条件的.htaccess中的RewriteCond不起作用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图阻止在这种情况下wordpress,重写某些URL.在这种情况下,我试图阻止它在uploads目录中处理请求,而不是将它们保留到服务器的404页面.所以我假设添加规则一样简单:
RewriteCond %{REQUEST_URI} !^/wp-content/uploads/

该规则应该评估为false,并使这些规则链失败,从而停止重写.但是没有…也许我需要在表达式中匹配封面的全部字符串?

RewriteCond %{REQUEST_URI} !^/wp-content/uploads/.*$

不,也不是.所以在抓了我的头后,我做了一个理智的检查.实际模式可能是错误的.所以我做一个简单的测试用例.

RewriteCond %{REQUEST_URI} ^/xyz/$

在这种情况下,当且仅当所请求的URL为/ xyz /并显示服务器的404页面以进行任何其他页面时,才会进行重写.这正是我的预期.所以我只是坚持下去!否定这种模式.

RewriteCond %{REQUEST_URI} !^/xyz/$

现在我期待看到与上述情况完全相反的情况.重写不应该发生在/ xyz /但是其他可能的URL.相反,对于每个URL / xyz /和其他URL都会进行重写.

所以,在RewriteConds中使用否定的正则表达式在Apache中被破坏,或者有一些基本的我不了解它.哪一个?

服务器是Apache2.

文件的全部内容

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteBase /
RewriteRule ^index\.PHP$- [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/wp-content/uploads/
RewriteRule . /index.PHP [L]
</IfModule>

wordpress的默认文件加上我的规则.

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteBase /
RewriteRule ^index\.PHP$- [L]

RewriteCond %{REQUEST_URI} !^/wp-content/uploads/ [OR]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule . /index.PHP [L]
</IfModule>

猜你在找的正则表达式相关文章