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

时间:2012-05-08 23:02:29

标签: php regex .htaccess url rewrite

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

非常感谢任何帮助!

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

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

看起来很简单,但正如我所提到的,我没有遇到一个网站,以某种方式解释这些概念,我可以弄清楚如何使这项工作。

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

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

2 个答案:

答案 0 :(得分:3)

这样的规则可以运行(测试):

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

这有三个部分:

  1. RewriteRule指定这是重写规则(与条件或其他指令相对)。该命令是将第2部分重写为第3部分。
  2. 此部分是正则表达式,仅当URL与此正则表达式匹配时才会运行规则。在这种情况下,我们说 - 查找字符串的开头,然后是一堆非斜杠字符,然后是斜杠,然后是另一堆非斜杠字符。括号表示括号内的部分将被存储以供将来参考。
  3. 最后,这部分说要以这种格式重写给定的URL。 $ 1和$ 2指的是捕获和存储的部分(反向引用)
  4. 至于mod_rewrite上的高质量资源,过去我通过搜索“mod_rewrite tutorial”找到了一些(我认为this对初学者来说是个好的)。它们大部分都是这样的,所以如果你有什么具体的东西你不理解,那么在前进之前就把它弄清楚。我不确定如何解释语法。

    正则表达是另一回事,那里有许多资源 - 包括初学者。一旦掌握了正则表达式的基本内容,就可以使用Python re page作为参考。

答案 1 :(得分:0)

像(未经测试)的东西添加到.htaccess?

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

假设x和y不感兴趣。