0

我有这个重写规则:

RewriteEngine on
RewriteBase /

RewriteCond %{THE_REQUEST} \.php[\ /?].*HTTP/ [NC]
RewriteRule ^.*$ - [R=404,L]

RewriteRule ^(home|contact|about|submit|search)/?$ /index.php?page=$1 [L]
RewriteRule ^([a-z]+)/([a-z0-9-]+)/?$ /index.php?page=home&cat=$1&slug=$2 [L]
RewriteRule ^([a-z]+)/?$ /index.php?page=home&cat=$1 [L]

我想要的是:

  • 如果用户键入的内容与最后三个条件不匹配,我想显示 404 错误。目前它加载主页。所以我$_GET['page']在那里办理登机手续。我不想检查 php。
  • 你有什么可以改进我的重写规则或任何补充吗?

请帮忙

4

3 回答 3

0

您可以使用 mod rewrite 将参数添加到您的网页 index.php,然后在 php 页面中处理它们,可能会返回一个错误页面(如在 cakePHP 中)。只保留一个规则。

 RewriteRule ^([0-9A-Za-z]+)/?$ /index.php?argument=$1 [L]
于 2012-08-08T07:11:35.237 回答
0

由于一切最终都路由到index.php(前端控制器模式),我建议删除mod_rewrite并使用:

FallbackResource /index.php

然后解析index.php中的 URL并相应地处理路由。

这将需要一些重写,但从长远来看会更加灵活。

阅读更多关于PHPFallbackResourceFront-Controllers 的信息。

于 2012-08-08T05:03:15.930 回答
0

尝试使用ErrorDocument白色位置页面

ErrorDocument 404 /erreur_404.html
于 2012-08-08T07:16:40.433 回答