删除index.php?使用mod_rewrite

时间:2017-07-25 17:32:55

标签: regex apache mod-rewrite

index.php中使用mod_rewrite删除.htaccess有很多答案,但我需要从传入的网址中删除index.php?并将其全部重写,即/index.php?pagename.php到{{ 1}}。

其中任何一个都单独工作,并删除/pagename.php

1)

index.php

2)

RewriteBase /
RewriteRule ^index.php?/(.*)$ $1 [R=301,L]

但不是RewriteBase / RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC] RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,NE,L] ,因为网址如下所示:?

问题是example.com/?pagename.php是正则表达式中的一个特殊字符,所以如果添加了它,我知道它需要被转义。但这些都不起作用:

1)

?

2)

RewriteBase /
RewriteRule ^index.php\??/(.*)$ $1 [R=301,L]

如何正确转义RewriteBase / RewriteCond %{THE_REQUEST} ^GET.*index\.php\? [NC] RewriteRule (.*?)index\.php\?/*(.*) /$1$2 [R=301,NE,L] 中的?

这个答案对我不起作用;它会离开index.php?Mod_rewrite rule to remove index.php

除此之外:两个重写规则之间是否有明显的差异?

1 个答案:

答案 0 :(得分:1)

您可以在站点根目录中使用此规则.htaccess:

.row {
    margin-right: -15px;
    margin-left: -15px;
}