如何在.htaccess中编写这个404规则

时间:2011-09-30 22:54:45

标签: php apache .htaccess url http-status-code-404

我有自定义CMS。除了一件事,它的效果非常好。我想知道如何最好地实现404功能。该网站应该只有以下网址类型

index.php?upn=something

gallery.php?groupId=2

在index.php或gallery.php之后附加到url的任何目录都应抛出404。如果在指定upn时在数据库中找不到内容,我还想抛出404。我意识到我可以在php中抛出标题。但我说我会尝试更全面地了解这个问题。所以如果你有任何信息或指示我会很感激他们。

2 个答案:

答案 0 :(得分:1)

你必须在php代码中返回404,但你可以在htaccess中设置404处理程序:

ErrorDocument 404 /errors/notfound.html

答案 1 :(得分:1)

我喜欢用我的PHP代码以编程方式执行此操作。你可以编写一些简单的Route Component,试图找到你想要的东西。今天你只是路由到行动(index.php?upn=gallery.php?groupId=)但是将来有一天你可能会添加新的行动,你应该改变你的.htaccess,这更难。如果您在应用层中完成所有操作,则可以更简单地进行更改。

将此代码粘贴到项目根目录下的.htaccess文件中,并将每个请求路由到router.php。收到请求后,您可以决定要执行的操作。

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ router.php?url=$1 [QSA,L]
</IfModule>

希望它有所帮助。