.htaccess 动态404页。。有点

.htaccess 动态404页。。有点,.htaccess,url-rewriting,.htaccess,Url Rewriting,好吧,这就是我想要实现的 如果服务器返回404,我希望能够将URL数据发送到php文件 例如: example.com/stackoverflow 将显示一个动态404页面 (404.php?id=stackoverflow) 但我不是在404中使用它。在我的情况下,我想在domain.com/之后发送数据 这样我就可以从数据库中提取并相应地显示内容 我知道这可以通过在.htaccess中进行一个小的重写来完成,regex对我来说太混乱了 我不想要重定向 http://example.co

好吧,这就是我想要实现的

如果服务器返回404,我希望能够将URL数据发送到php文件

例如:

example.com/stackoverflow 
将显示一个动态404页面

(404.php?id=stackoverflow)
但我不是在404中使用它。在我的情况下,我想在domain.com/之后发送数据

这样我就可以从数据库中提取并相应地显示内容

我知道这可以通过在.htaccess中进行一个小的重写来完成,regex对我来说太混乱了

我不想要重定向

http://example.com/datahere
应显示以下数据:

404.php?id=datahere

您可以使用
ErrorDocument
指令将404 URI重定向到
/404.php
如下所示:

ErrorDocument 404 /404.php?id=%{REQUEST_URI}
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ /404.php?id=$1 [L]
这将把
/datahere
重写为
/404.php?id=datahere
/datahere
将显示
/404.php?id
的内容)

请注意,上面的指令在apache版本bellow 2.4上不起作用,因为mod rewrite变量
%{REQUEST_URI}
在较低版本上被视为纯文本而不是变量

在Apache2.2上,您可以使用mod rewrite将不存在的请求重写到404。使用以下命令:

ErrorDocument 404 /404.php?id=%{REQUEST_URI}
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ /404.php?id=$1 [L]