需要帮助为 PHP 和 htaccess 编写 URL 重写规则正则表达式


Need help writing URL Rewrite rule Regular Expression for PHP and htaccess

我读过很多关于如何使用重写规则和正则表达式的网站,但它们都倾向于用于特定示例,而不会分解语法的每一部分,实际上帮助我学习概念,以便我可以编写我需要的代码类型。

任何帮助都非常感谢!

我有一个这样的网址 http://www.mysite.com/myphp.php?x=1A&y=2B&c=some1&d=some2

我希望这样重写:http://www.mysite.com/some1/some2

这看起来很简单,但正如我所提到的,我还没有遇到一个网站来解释这些概念,我可以弄清楚如何做到这一点。

在这个特定的例子中,?x= 总是相同的,而 1A 是不同的。这同样适用于 php 字符串的其他部分,但是,我假设重写规则应该处理.php文件和我实际感兴趣的变量之间的任意数量的字符。

再次感谢任何可以帮助解释这一点或提供有关重写规则和正则表达式的高质量资源以帮助我学习它的人。

像这样的规则将起作用(经过测试(:

RewriteRule ^([^/]+)/([^/]+) myphp.php?x=1A&y=2B&c=$1&d=$2 [L]

这有三个部分:

  1. RewriteRule指定这是重写规则(而不是条件或其他指令(。该命令是将第 2 部分重写为第 3 部分。
  2. 这部分是正则表达式,仅当 URL 与此正则表达式匹配时,才会运行规则。在这种情况下,我们说 - 寻找字符串的开头,然后是一堆非斜杠字符,然后是斜杠,然后是另一堆非斜杠字符。括号表示括号内的部分将被存储以备将来参考。
  3. 最后,这部分说要以这种格式重写给定的URL。 $1 和 $2 是指捕获和存储的部分(反向引用(

至于mod_rewrite上的高质量资源,过去我通过搜索"mod_rewrite教程"找到了一些(我认为这对初学者来说是一个很好的教程(。他们大多是这样的,所以如果你有什么具体的东西不明白,在继续之前把它弄好。我不确定如何解释语法。

正则表达式是另一回事,同样,那里有很多资源 - 包括初学者。一旦你掌握了正则表达式的基本窍门,你就可以使用 Python re页面作为参考。

类似(未测试(添加到 .htaccess 的内容?

RewriteEngine on
RewriteRule ^/([0-9a-z]+)/([0-9a-z]+)/$ /?c=$1&d=$2 [L]

假设 x 和 y 不感兴趣。