1

我希望 .htaccess 为不符合以下 url 模式标准的任何 url 返回错误 404。如何在 .htaccess 中执行此操作?

在 php 脚本中使用此代码生成上面的 url

$adscatcanonurl = "$script_url" . "/" . "{$vbasedir}$xcityid-$xcitynamealt/posts/$xcatid-$catname_inurl/". ("$xsubcatid"?"$xsubcatid-". RemoveBadURLChars($xsubcatname) :"");

示例链接

http://www.domain.com/17-Netherlands/posts/8-Real-Estate/

假设脚本生成这样的链接 http://www.domain.com/17-Netherlands/posts/8/

由于它与上述 url 模式不匹配,因此此类 url 应返回 404 页面而不是响应。

4

2 回答 2

1

您不需要强制 .htaccess 返回 404,如果没有匹配,它会自行执行。因此,您可以使用如下规则:

RewriteEngine On
# Don't match real files
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(\d+)-([a-zA-Z-]+)/posts/(\d+)-([a-zA-Z-]+)$ your_php_script.php?xcityid=$1&xcitynamealt=$2&xcatid=$3&xcatname_inurl=$4 [L,QSA]

任何不是针对实际文件(css、js 等)且不匹配上述规则的请求都不会匹配任何规则,因此应该返回 404。

请注意,在规则中,我将 4 个组件映射到将在您的 PHP 中读取的内容$_GET['xcityid'],等等。

于 2012-04-22T12:28:35.907 回答
0

为什么不使用:ErrorDocument 404 /404page.html

http://www.yourhtmlsource.com/sitemanagement/custom404error.html

于 2012-07-16T04:25:28.500 回答