重定向精确 URL

重定向精确 URL

我在 .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]

我应该怎么做才能只重定向该单个页面?

答案1

查询字符串(?page=faq)不是 RewriteRule 中测试的 URL 的一部分,因此您必须添加单独的条件来测试它:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^script-dir/index\.php$ http://example.com/ [R=301,L]

但我不确定为什么其他页面会被重定向。

答案2

您可以根据空的 QUERY_STRING RewriteCond,遵循与其他答案相同的方法:https://stackoverflow.com/a/7591367/4363163。此外,您可能更喜欢精确匹配,而不依赖于 RegExp,正如另一个答案中所述: https://stackoverflow.com/a/24476841/4363163

相关内容