使用.htaccess重定向我的网址,如下所示:
(?<!(?:sm|f?l)(?=ashing))ashi
友好的网址->转换为php网址
docker exec -i "$CLI_ID" bash "./script.sh" PARAM
但是当有人进入站点时,如下所示:
RewriteRule ^b/([^/]+)/([^/]+)? b/view.php?id=$2&name=$1
我不知道如何摆脱domain.com/b/hello/2 -> b/view.php?id=2&name=hello
我尝试了包括[QSD]在内的所有操作,但似乎无法正常工作。
更新
我设法使其与以下各项一起使用,但它执行了两次301重定向,而不是一次:
domain.com/b/hello/2?query=xyz
答案 0 :(得分:0)
检查在规则末尾添加问号是否会取消从左侧追加查询字符串
RewriteRule ^b/([^/]+)/([^/]+)? b/view.php?id=$2&name=$1? [QSD,L]
答案 1 :(得分:0)
您可以使用其他规则来捕获GET参数并将其删除。
RewriteCond %{QUERY_STRING} .+
RewriteRule ^(.*)$ /$1? [R=301,L]
RewriteRule ^b/([^/]+)/([^/]+)? b/view.php?id=$2&name=$1
要使其仅在/b/
子文件夹上起作用,请使用以下命令:
RewriteCond %{QUERY_STRING} .+
RewriteRule ^b/(.*)$ b/$1? [R=301,L]
RewriteRule ^b/([^/]+)/([^/]+)? b/view.php?id=$2&name=$1
第一个规则会将与您的规则匹配的所有内容重定向到没有任何GET参数的URL(请注意,重写规则末尾的?
会剥离参数)。
如果无法应用第一个规则,即没有参数,则第二个规则将匹配