首页 > 解决方案 > htaccess 重写查询字符串未按预期工作

问题描述

我的 htaccess 中有以下内容

RewriteEngine on
RewriteCond %{QUERY_STRING} (^|&)id=3($|&)
RewriteRule ^user/members/profile\.php$ /user/members/profile/id/3?&%{QUERY_STRING}

RewriteCond %{THE_REQUEST} /([^.]+)\.php [NC]
RewriteRule ^ /%1 [NC,L,R]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_URI}.php [NC,L]

我希望重写规则做两件事:

查询字符串被重定向到 user/members/profile/id/id=3?id=3

帮助!

标签: apache.htaccessmod-rewrite

解决方案


因此,您应该将模式与正则表达式匹配,如下所示:

RewriteEngine on    
RewriteRule    ^user/members/profile/id/([0-9]+)/?$    user/members/profile.php?id=$1    [NC,L]

应该重定向user/members/profile.php?id=3user/members/profile/id/3

就像我之前提到的,你可以在这里找到详细的解释。虽然添加单独的规则会很乏味,但可能有助于使用已经具有更好 URL(如 Laravel 或 Symfony)的 PHP 框架。


推荐阅读