我对 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
答案 0 :(得分:0)
基本上,您重新排列请求网址。这意味着,您必须单独捕获(...)
部分,并将它们放在替换$...
中。您还希望保留现有的查询字符串,这需要使用QSA|qsappend
标志。 RewriteCond
用于防止重写循环。如果规则被应用一次,则不应再次使用。
RewriteCond %{QUERY_STRING} !lang=
RewriteRule ^(..)(.*)$ $2?lang=$1 [L,QSA]
要详细了解正则表达式,请参阅Apache - Regular Expressions。