apache - 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]
我希望重写规则做两件事:
- 删除 .php
- 将 user/members/profile.php?id=3 更改为 user/members/profile/id/3
查询字符串被重定向到 user/members/profile/id/id=3?id=3
帮助!
解决方案
因此,您应该将模式与正则表达式匹配,如下所示:
RewriteEngine on
RewriteRule ^user/members/profile/id/([0-9]+)/?$ user/members/profile.php?id=$1 [NC,L]
应该重定向user/members/profile.php?id=3
到user/members/profile/id/3
就像我之前提到的,你可以在这里找到详细的解释。虽然添加单独的规则会很乏味,但可能有助于使用已经具有更好 URL(如 Laravel 或 Symfony)的 PHP 框架。
推荐阅读
- javascript - 如何将 javascript 插件添加到 vaadin 网站
- r - 在 R Studio 上使用 API 进行人口普查数据
- python - 'QuerySet' 对象没有属性 '_meta' 模型查询到 JSON 格式
- java - 如何通过使用-MapStruct从源对象复制值来填充目标对象内的地图?
- authentication - 暂时禁用特定 CouchDB 用户的密码
- amazon-s3 - 如何在使用 boto3 create_presigned_post 时添加元数据?
- java - Java - 自定义排序数组,就像它们是元组一样
- react-native - React Native 访问 SecureStore
- javascript - 连接到互联网时刷新应用程序
- assembly - 函数栈帧