Apache .htaccess 301重定向子域查询

Apache .htaccess 301重定向子域查询,apache,.htaccess,mod-rewrite,url-redirection,Apache,.htaccess,Mod Rewrite,Url Redirection,我需要重定向这个: /blog/?=31 到 及 到 我试过一些显而易见的东西: Redirect 301 /blog/?p=31 /blog/ Redirect 301 /blog/?page_id=2 /blog/ 很明显,它不起作用,否则我不会在这里问这个问题,所以不要说明显的 为了处理涉及查询字符串的重定向,您需要在.htaccess文件中使用mod_rewriteRewriteCond%{Query_STRING}: RewriteEngine on RewriteCond %{

我需要重定向这个:

/blog/?=31

我试过一些显而易见的东西:

Redirect 301 /blog/?p=31 /blog/
Redirect 301 /blog/?page_id=2 /blog/

很明显,它不起作用,否则我不会在这里问这个问题,所以不要说明显的

为了处理涉及查询字符串的重定向,您需要在
.htaccess
文件中使用
mod_rewrite
RewriteCond%{Query_STRING}

RewriteEngine on

RewriteCond %{QUERY_STRING} !^$
RewriteRule ^blog http://example.com/blog? [NC,L,R=301]

提供了重定向指令。我不确定,但我认为它没有收到查询字符串参数。但是,使用
mod_rewrite
,规则是:

RewriteEngine On
RewriteCond %{QUERY_STRING} ^p=31|page_id=2$
RewriteRule ^/?blog/?$ /blog/? [R=301,L]

不适合我。我自己也试过,但没用。从技术上讲,这应该行得通。但它就是不起作用。我认为问题在于我的网站的设置方式。在主站点下,我们有一个wp安装,然后在主站点下的目录中是另一个wp安装。我不能100%确定将重定向放在哪里。目前,我对根站点和/blog/site的所有重定向都位于root.htaccess文件中。@SchalkKeun如果您试图重定向
http://whatever.com/blog/?p=31
http://whatever.com/blog/
,则规则将进入根目录。此外,您还需要检查mod_rewrite是否已启用。mod_rewrite已100%启用,因为wp安装使用的是seo友好的url结构,我的rewrite语句包含在
中,另一件事是该站点托管在AWS云服务器上。
条件中的更多信息是一些100%工作的
重定向匹配
模块别名
再次提供了重定向匹配。要检查是否正在处理规则,请将以下内容放在
RewriteEngine
行之后:
RewriteRule^https://stackoverflow.com/
Redirect 301 /blog/?p=31 /blog/
Redirect 301 /blog/?page_id=2 /blog/
RewriteEngine on

RewriteCond %{QUERY_STRING} !^$
RewriteRule ^blog http://example.com/blog? [NC,L,R=301]
RewriteEngine On
RewriteCond %{QUERY_STRING} ^p=31|page_id=2$
RewriteRule ^/?blog/?$ /blog/? [R=301,L]