我在我的 cms 中使用预定义的 htaccess,如下所示:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?%{QUERY_STRING} [L]
我想更新 URL 以删除 2 个“子目录”:
从/en/top/solutions/?id=1
至/solutions/?id=1
从/en/top/about/?othervar=1
至/about/?othervar=1
这是我迄今为止所做的事情之一:
RewriteRule ^en/top/ /$1 [L,R=301]
我无法让它工作。谢谢
答案1
意思$1
是“使用原始 URL 的第一个捕获部分”。为了捕获原始 URL 的一部分,您需要使用括号将其捕获进去。像这样:
RewriteRule ^/en/top/(.*) /$1 [QSA]
这意味着“获取以 开头的任何内容/en/top/
,然后捕获其后的内容并将其放入变量 $1 中。重写为 $1 变量并附加原始查询字符串。