htaccess将404页面重定向到index.php

htaccess将404页面重定向到index.php,php,apache,.htaccess,redirect,mod-rewrite,Php,Apache,.htaccess,Redirect,Mod Rewrite,我已经改变了我的网站&url结构。 现在我想将我的旧页面(目前是404错误页面)重定向到我的主页 网址: http://www.example.com/abc-def-ghi-sp(m).html 到 我在htaccess中使用了以下规则 RewriteEngine On RewriteRule ^(.*)\.html$ / [L,R=301] RewriteRule ^page\.php / [L,R=301] 上述规则很有效。 我还需要另一个重定向。但它不起作用 http://www.

我已经改变了我的网站&url结构。 现在我想将我的旧页面(目前是404错误页面)重定向到我的主页

网址:

http://www.example.com/abc-def-ghi-sp(m).html

我在htaccess中使用了以下规则

RewriteEngine On
RewriteRule ^(.*)\.html$ / [L,R=301]
RewriteRule ^page\.php / [L,R=301]
上述规则很有效。 我还需要另一个重定向。但它不起作用

http://www.example.com/page.php?name=amca&PID=143&PageID=abc

我在htaccess中使用了以下规则

RewriteEngine On
RewriteRule ^(.*)\.html$ / [L,R=301]
RewriteRule ^page\.php / [L,R=301]
但是结果呢

它正在显示主页

但是浏览器中的url是

http://www.example.com/?name=amca&PID=143&PageID=abc

我尝试了不同的规则。但不起作用

尝试
^page\.php*$/[L,R=301]

http://www.example.com/page.php?name=amca&PID=143&PageID=abc
您只匹配了您感兴趣的模式,引擎将只替换匹配的部分。因此,您应该在感兴趣的模式之后匹配所有内容,因为它是替换的牺牲品


“*”匹配“php”之后的所有内容,“$”表示字符串的结尾。

尝试
^page\.php*$/[L,R=301]

您只匹配了您感兴趣的模式,引擎将只替换匹配的部分。因此,您应该在感兴趣的模式之后匹配所有内容,因为它是替换的牺牲品


“*”匹配“php”之后的所有内容,“$”表示字符串的结尾。

尝试在目标url的结尾添加一个

RewriteRule ^page\.php /? [L,R=301]
结尾处的空问号很重要,因为它会丢弃原始查询字符串

这将重定向/fill.php?foo=bar到/而不附加旧的querystring

在测试之前,请清除浏览器的缓存。

如果要重定向带有查询字符串的特定url

你可以试试

RewriteEngine on


RewriteCond %{QUERY_STRING} ^q=foo&u=bar$ [NC]
RewriteRule ^file.php$ /? [NC,L,R]

这会将特定url/file.php?q=foo&u=bar重定向到/

尝试在目标url的末尾添加一个

RewriteRule ^page\.php /? [L,R=301]
结尾处的空问号很重要,因为它会丢弃原始查询字符串

这将重定向/fill.php?foo=bar到/而不附加旧的querystring

在测试之前,请清除浏览器的缓存。

如果要重定向带有查询字符串的特定url

你可以试试

RewriteEngine on


RewriteCond %{QUERY_STRING} ^q=foo&u=bar$ [NC]
RewriteRule ^file.php$ /? [NC,L,R]
这将把一个特定的url/file.php?q=foo&u=bar重定向到/