动态404页...有点

时间:2018-04-05 16:51:35

标签: .htaccess url-rewriting

好吧,所以这就是我想要实现的目标。

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

例如:

example.com/stackoverflow 

会显示动态404页面

(404.php?id=stackoverflow)

但在我的情况下,我没有将它用于404,我想在domain.com/

之后发送数据

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

我知道这可以通过.htaccess中的小重写完成,正则表达式对我来说很困惑。

我不想要重定向。

http://example.com/datahere

应显示

的数据
404.php?id=datahere

1 个答案:

答案 0 :(得分:1)

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

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

这会将/datahere重写为/404.php?id=datahere/datahere会显示/404.php?id)的内容。

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

在apache 2.2上,您可以使用mod-rewrite将不存在的请求重写为404。使用以下内容:

RewriteEngine on

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