2015-11-09 167 views
2

我想问你们,因为我有一个重写规则存在问题,我无法弄清楚如何编写好的规则。 我有这样的规则:重写规则正则表达式

RewriteRule ^wp-content/uploads/(.*[^(.js|.swf)])$ authenticate.php?file=$1 

我想要做的是,当有人试图在wp-content上传目录打开的东西,我想文件名发送到PHP用户每次重定向到authenticate.php

例如:

http://domain.tld/wp-content/uploads/2015/11/something.pdf 

重定向到authenticate.php?file=something.pdf

但不幸的是我的正则表达式被破坏了。有人能帮助我吗?

真的非常感谢!

回答

1

与尝试在你的.htaccess

RewriteCond %{REQUEST_URI} !(?:js|swf)$ [NC] 
RewriteRule ^wp-content/uploads/(.+)$ authenticate.php?file=$1 [NC,L] 

对于http://domain.tld/wp-content/uploads/2015/11/something.pdf结果:http://domain.tld/authenticate.php?file=2015/11/something.pdf

+0

如果你不想要'/ 2015/11 /',指定格式是否始终存在,并且始终格式为'/ YYYY/MM /' – Croises

0

尝试使用此正则表达式与负向前看符号:

^.*?wp-content\/uploads\/.*?\.(?!js$|swf$)[^.]+$ 

以下URL将匹配正则表达式:

http://cpsma.ie/wp-content/uploads/2015/09/CPSMA-Newsletter-No-35-Sept-2015-2.pdf 

然而,在.js.swf匹配从而结束了类似的URL 。因此,以下两个URL做匹配的正则表达式:

http://domain.tld/wp-content/uploads/2015/10/javascript.js 
http://domain.tld/wp-content/uploads/2015/02/shockwavefile.swf 

你可以在这里测试这个表达式出来:

Regex101

+0

您好!感谢您的回答。我试了一下,但不幸的是它不工作。 这里是链接 http://cpsma.ie/wp-content/uploads/2015/09/CPSMA-Newsletter-No-35-Sept-2015-2.pdf 但它显示了pdf内容。 这里是htaccess的 [代码] #BEGIN WordPress的 RewriteEngine叙述在 RewriteBase/ 重写规则^索引\ .PHP $! - [L] 的RewriteCond%{REQUEST_FILENAME} -f 的RewriteCond %{REQUEST_FILENAME}!-d RewriteRule。的index.php [L] 重写规则^ HTTP *可湿性粉剂内容\ /上传\ /.* \。?。?(?JS $ | SWF $)。^] + $ auth.php FILE = $ 1 #END WordPress [/ code] – Wathfea

+0

我更新了我的答案。我认为所有的URL都以'http'开始,但显然情况并非如此。 –

+0

我认为重定向不起作用,因为它根本没有被触发。你的正则表达式很好,但是当我打电话给页面时,什么都没有发生。:/ RewriteRule ^。*?wp-content \/uploads \ /.*?\。(?!js $ | swf $)[^。] + $ auth.php?file = $ 1 – Wathfea