【发布时间】:2019-02-19 12:31:09
【问题描述】:
我在 Reddit (r/learnprogramming) 上发布了这篇文章,那里有人私信我并告诉我来这里,所以我来了!
我一直在努力学习正则表达式,但我仍然很讨厌它们。我很难掌握模式匹配。我精通其他 OOP 语言,所以我想我会学习正则表达式,但它只是逃避了我。
我已经下载了 EditPad Pro,所以我可以按照http://www.regular-expressions.info/tutorial.html 的建议进行练习。我可以获得匹配批量文本的表达式,但我正在尝试解析 URL,但我一直在丢失。
这就是我想要做的。我正在编写自己的永久链接 .htaccess 文件作为概念验证研究,因此我希望可以在未来的站点中使用它。
我需要从一个 URL 中返回以下动态内容:
我需要 http://www.domain.com/ 或 http://domain.com/ 或 domain.com/ 以外的所有内容:
(由于新帐户的限制,我在 http:// 后面添加了一个空格)
http://www.domain.com/asdjh324hj.jpg
http://www.domain.com/asa45s.png
http://www.domain.com/aser24hj.gif/
http://www.domain.com/wer234dsfa/
http://www.domain.com/k3kjk4
http://www.domain.com/k3kasd4/
匹配的部分将被附加到:
http://www.domain.com/some_dir/som_subdir/some_file.php?querystring=$1
但是,我不希望结果中出现以下任何网址:
http://www.domain.com/some_dir/some_file.php
http://www.domain.com/some_dir/some_subdir/some_file.html
而且我需要防止盗链到 image_dir 中的图片:
http://www.domain.com/image_dir/some_dir/some_subdir/some_image.jpg(或png、gif等)
热链接图像将被重定向到一个页面,其中传递的图像作为查询字符串。
那么我会设置什么 RewriteRule 正则表达式来获取它?我了解 RewriteRules 和标志,将匹配的结果放入变量等,我只是不知道我应该写什么正则表达式来获取实际结果。
如果这对于 RewriteRules 来说太复杂了,请告诉我,因为我在这里很苦恼。
通常我在 PHP 中执行这些操作,并且会从以下内容开始:
.com/[a-zA-Z0-9-_.]+
([^/]+)/?$
然后做好'ol子串和检查。它把它砍死了,我应该做得更好!
我目前正在阅读regular-expressions.info 教程并且正在取得进展,但我也一直在抓错东西。
感谢您发送给我的任何帮助!
更新:我能够在大量帮助下解决所有问题,并在此处进行了更多讨论:Mod_Rewrite conditions help for hotlinking but allow local requests
【问题讨论】:
-
这不是超过1个问题吗?搜索'prevent hotlink apache' 给出(这个)[stackoverflow.com/questions/1775582/…。尝试为其他两个搜索“[apache] rewrite clean url”和“[apache] rewrite exception”。
标签: regex .htaccess mod-rewrite apache2