【问题标题】:.htaccess treat first segment in URL as $_GET parameter for all php files.htaccess 将 URL 中的第一段视为所有 php 文件的 $_GET 参数
【发布时间】:2017-08-08 22:31:33
【问题描述】:

.htaccess 面临的问题是我想将 URL 的第一段作为 $_GET 参数传递,例如 www.example.com/en/ 读取为 www.example.com?language=en 和 www.example.com/category/groceries/?language=en 读作 www.example.com/en/ category/groceries ,我希望对所有 php 页面都执行此操作,而无需为每个页面编写规则 这是我尝试但没有成功的方法

RewriteEngine on
RewriteRule ^en$ ?language=en&%{QUERY_STRING} [NC,L,QSA]
RewriteRule ^ar$ ?language=ar&%{QUERY_STRING} [NC,L,QSA]

然而这并没有按预期工作

【问题讨论】:

    标签: php apache .htaccess mod-rewrite


    【解决方案1】:

    您可以对所有 URL 使用这条规则:

    RewriteEngine on
    
    RewriteRule ^([a-z]{2})(/.*)?$ $2?language=$1 [L,QSA]
    

    如果您只想支持 en 作为语言标识符,请使用:

    RewriteRule ^(en)(/.*)?$ $2?language=$1 [L,QSA]
    

    【讨论】:

    • 谢谢! , 我怎样才能只支持两种语言,即 ar 和 en ,否则重定向到 en ?
    • 用于该用途:RewriteRule ^(?:en|ar)(/.*)?$ $1?language=en [L,QSA]
    • 如果使用 en 或 ar 可以正常工作,但如果我使用 fr 它会显示错误,在这种情况下我想重定向到 en,再次感谢!
    • 那么第一条规则更好:RewriteRule ^(?:[a-z]{2})(/.*)?$ $1?language=en [L,QSA]
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-28
    • 1970-01-01
    • 2012-03-27
    • 2015-02-25
    • 1970-01-01
    相关资源
    最近更新 更多