首页 > 解决方案 > 使用 htacesss 重写 URL 和重定向基本 url

问题描述

我是 htaccess 重写规则和正则表达式的新手,我想重写我的基本 url -> /service/authentication/?step=1 to -> /service/new/auth/1

step= 是从 1 到 5 的参数

所以我的规则是:

RewriteRule ^new/auth/([^/.]+)?$ /service/index.php/authentication/?step=$1 [L]
RewriteRule ^new/auth/([^/.]+)?/$ /service/index.php/authentication/?step=$1 [L]

所以当我/service/new/auth/8在 url 中访问时它工作得很好

所以在那之后我创建了一个新规则来将基本 url 重定向到重写的 url

我的规则是:

RewriteRule ^authentication/$ /service/new/auth/$1 [L,R]

基本网址现在重定向到/service/new/auth/?step=1

它必须重定向到的问题/service/new/auth/1 而不显示 step=1 和?必须是身份证

我想我的 regax 有问题

感谢所有帮助

标签: regex.htaccessredirectmod-rewrite

解决方案


使用您显示的示例,请尝试遵循 htaccess 规则。确保将这些规则放在重写规则之前(我假设这些规则已经存在于您的文件中)。

确保在测试 URL 之前清除浏览器缓存。

RewriteEngine ON
##Rules for external redirect goes from here....
RewriteCond %{THE_REQUEST} \s/service/authentication\?step=(\d+)\s
RewriteRule ^ /service/new/auth/%1? [R=301,L]
##rest of your rules for internal redirect/rewrite goes from here..

推荐阅读