如果我明白你在说什么,那么你是说你有一个重写的 URL 列表(使用mod_rewrite
);其中一些存在,一些不存在。对于那些不存在的,您希望它们被重定向到新的页面位置吗?
简短的回答是,你不能在htaccess
. 当您使用 时mod_rewrite
,您重写的页面名称将传递给控制器文件,该文件将重写的 URL 转换为它应该显示的页面/内容。
我只是假设您使用的是 PHP,如果是这样,大多数 PHP 框架(CakePHP、Drupal、LithiumPHP 等)可以为您解决这个问题并处理不存在文件的自定义重定向。如果您有自定义编写的应用程序,则需要在 PHP 网站内而不是在.htaccess
文件中处理重定向。
一个非常简单的例子是:
<?php
function getTag($url) {
if (preg_match('|/tag/([0-9a-zA-Z]*)/|', $url, $match)) {
return $match[1];
}
return '';
}
function validateUrl($url) {
if (preg_match('|/tag/([0-9a-zA-Z]*)/page/([0-9]*)/|', $url, $match)) {
$tag = $match[1];
$page = $match[2];
$isValid = // your code that checks if it's a URL/page that exists
return $isValid;
}
return false;
}
if (!validateUrl($_SERVER['REQUEST_URI'])) {
$tag = getTag($_SERVER['REQUEST_URI']);
header ('HTTP/1.1 301 Moved Permanently');
header('Location /tag/' . $tag . '/');
die();
}
?>