我在 .htaccess 中使用以下指令仅将 example.com/script-dir/index.php(带 www 和不带 www)重定向到 example.com/index.php。但它也会重定向 example.com/script-dir/index.php?page=faq 和其他页面。
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.example\.com$
RewriteRule ^script\-dir\/index\.php$ "http\:\/\/example\.com\/" [R=301,L]
我应该怎么做才能只重定向那个单页?
查询字符串 (
?page=faq
) 不是在 RewriteRule 中测试的 URL 的一部分,因此您必须添加一个单独的条件来测试它:我不确定为什么其他页面会被重定向。
您可以根据空 QUERY_STRING 重写Cond,方法与其他答案相同:https ://stackoverflow.com/a/7591367/4363163 。此外,您可能更喜欢完全匹配,而不依赖于 RegExp,如其他答案中所述: https ://stackoverflow.com/a/24476841/4363163