Php Mod rewrite重定向到404

Php Mod rewrite重定向到404,php,.htaccess,mod-rewrite,http-status-code-404,Php,.htaccess,Mod Rewrite,Http Status Code 404,当前.htaccess RewriteEngine on RewriteRule category-([0-9]+)-(.*)-([0-9]+)\.html$ category.php?cid=$1&name=$2&page=$3.php [L] RewriteRule search-(.*)-([0-9]+)\.html$ search.php?term=$1&page=$2.php [L] RewriteRule all-covers-([0-9]+)\.html$

当前.htaccess

RewriteEngine on

RewriteRule category-([0-9]+)-(.*)-([0-9]+)\.html$ category.php?cid=$1&name=$2&page=$3.php [L]
RewriteRule search-(.*)-([0-9]+)\.html$ search.php?term=$1&page=$2.php [L]
RewriteRule all-covers-([0-9]+)\.html$ all-covers.php?page=$1.php [L]
RewriteRule featured-covers-([0-9]+)\.html$ featured-covers.php?page=$1.php [L]
RewriteRule top-downloaded-([0-9]+)\.html$ top-downloaded.php?page=$1.php [L]
RewriteRule c-([0-9]+)-(.*)\.html$ cover.php?id=$1&name=$2.php [L]
RewriteRule ^sitemap.xml$ sitemap.php [L]
RewriteRule ^(.*)\.html$ $1.php [L]

ErrorDocument 404 /404.html
我想从如下页面重定向到404: [http://example.com/http://example.com/c-42.html]


请提供帮助

您需要做的第一件事是将限定符添加到您的正则表达式模式中:

RewriteRule ^category-([0-9]+)-(.*)-([0-9]+)\.html$ category.php?cid=$1&name=$2&page=$3.php [L]
RewriteRule ^search-(.*)-([0-9]+)\.html$ search.php?term=$1&page=$2.php [L]
RewriteRule ^all-covers-([0-9]+)\.html$ all-covers.php?page=$1.php [L]
RewriteRule ^featured-covers-([0-9]+)\.html$ featured-covers.php?page=$1.php [L]
RewriteRule ^top-downloaded-([0-9]+)\.html$ top-downloaded.php?page=$1.php [L]
RewriteRule ^c-([0-9]+)-(.*)\.html$ cover.php?id=$1&name=$2.php [L]

这意味着,例如,
^c-([0-9]+)-(.*)\.html$
将匹配
http://example.com/c-42.html
但不再匹配
http://example.com/http://example.com/c-42.html
。后者将自动成为404。

我不明白?要重定向的URL;它是
example.com/c-42.html
(根据您已有的重写规则,还是您发布的:
http://example.com/http://example.com/c-42.html