PHP假网址,复杂.htaccess rewrite_mod

时间:2016-07-06 07:58:14

标签: php .htaccess routing

我对 CakePHP 以及php rewrite_mod 有很多了解,但我对如何使用它非常困惑,因为我对正则表达式一无所知。 我怎么能有这样的东西?

mywebsite.com/ zh / => mywebsite.com/?lang=en

mywebsite.com/ zh_ / about => mywebsite.com/about/?lang=en

mywebsite.com/ zh_ / search /?query = Hello + World => mywebsite.com/search/?query=Hello+World&lang=en

所以在现实中我的文件就像:

public_html/about/index.php
public_html/search/index.php
public_html/index.php

但我假装它像

public_html/en/about/index.php
public_html/en/search/index.php
public_html/en/index.php

并且需要保存URL,并且PARAMETERS通过GET传递,我不明白如何在.htaccess中设置如此复杂的url控制器

我也尝试过这个,但没有退出,是否有任何示例项目? cakephp 3 parameter url

1 个答案:

答案 0 :(得分:0)

基本上,您重新排列请求网址。这意味着,您必须单独捕获(...)部分,并将它们放在替换$...中。您还希望保留现有的查询字符串,这需要使用QSA|qsappend标志。 RewriteCond用于防止重写循环。如果规则被应用一次,则不应再次使用。

RewriteCond %{QUERY_STRING} !lang=
RewriteRule ^(..)(.*)$ $2?lang=$1 [L,QSA]

要详细了解正则表达式,请参阅Apache - Regular Expressions