【问题标题】:How to create .htaccess for multiple parameters in URL?如何为 URL 中的多个参数创建 .htaccess?
【发布时间】:2020-11-14 03:16:32
【问题描述】:

我需要使用这个 .htaccess 文件。它只会将 URL 从 www.mydomain.com/users/user?usernam=myname123&profile=myprofile123&data=mydata123 更改为 www.example.com/users/myname123/myprofile123/mydata123

我用

RewriteEngine On
RewriteRule ^user\.php$ - [L]
RewriteRule ^([0-9a-zA-Z\-_.]*)/?$ /users/user.php?username=$1&profile=$2&data=$3[L,QSA]

用户文件夹中的htaccess

不工作

【问题讨论】:

  • 完成,路径 /users/.htaccess ,我在主路径中有另一个 htaccess
  • 根据this meta postthis meta post,这个问题对于SO 来说根本不是题外话,所以近距离投票是错误的。这已经被反复讨论过,并且已经确定大多数重写规则是由 Web 应用程序/框架的开发人员创建和维护的。

标签: regex apache .htaccess mod-rewrite url-rewriting


【解决方案1】:

对于您显示的示例,您能否尝试以下规则。这将从 REQUEST_URI 开始。

RewriteEngine ON
RewriteCond %{QUERY_STRING} ^$
RewriteCond %{THE_REQUEST} /([^/]*)/([^/]*)/([^/]*)/([^/]*)/?\s 
RewriteRule ^(.*) /%1?username=%2&profile=%3&data=%4 [NE,L,NC]

如果您想在 URI 中匹配 users 或(使用上面或后面的一个),则运行规则然后尝试跟随。

RewriteEngine ON
RewriteCond %{QUERY_STRING} ^$
RewriteCond %{THE_REQUEST} /users/([^/]*)/([^/]*)/([^/]*)/?\s 
RewriteRule ^(.*) /users?username=%1&profile=%2&data=%3 [NE,L,NC]

说明:为上述添加详细说明。

  • RewriteEngine ON:在此处启用 RewriteEngine 以启用 mod 规则编写。
  • RewriteCond %{QUERY_STRING} ^$:如果查询字符串为 NULL,则检查条件,然后在规则中进一步。
  • RewriteCond %{THE_REQUEST} /users/([^/]*)/([^/]*)/([^/]*)/?\s:将 THE_REQUEST 中的正则表达式从 /users 匹配到空格,并将 3 个组值捕获到后面的引用中以供以后使用。
  • RewriteRule ^(.*) /users?username=%1&profile=%2&data=%3 [NE,L,NC]:使用 url 重写将 URI 更改为根据 OP 的请求,其中包含反向引用值。

【讨论】:

    猜你喜欢
    • 2015-02-25
    • 2015-11-01
    • 2017-04-18
    • 2013-12-15
    • 2012-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多