修复跳转问题

master
落雨楓 3 weeks ago
parent 0d8522650a
commit 33ba41e855

@ -57,23 +57,23 @@ class Hooks {
if ($realTitle) {
$title = $realTitle;
$request->setVal('title', $title->getPrefixedDBkey());
}
}
if (
$wgLatinizeUrlForceRedirect
&& !($request->getVal('action') && $request->getVal('action') != 'view')
&& !$request->getVal('veaction')
&& !defined('MW_API')
&& in_array($title->getNamespace(), self::$allowedNS)
) { //把原标题页面重定向到拼音页面
$absoluteSlug = Utils::getSlugUrlByTitle($title);
$slugText = str_replace(' ', '_', $slugText);
$absoluteSlug = str_replace(' ', '_', $absoluteSlug);
if ($slugText !== $absoluteSlug) {
$title = Title::newFromText($absoluteSlug, $title->getNamespace());
}
}
if (
$wgLatinizeUrlForceRedirect
&& !($request->getVal('action') && $request->getVal('action') != 'view')
&& !$request->getVal('veaction')
&& !defined('MW_API')
&& in_array($title->getNamespace(), self::$allowedNS)
) { //把原标题页面重定向到拼音页面
$absoluteSlug = Utils::getSlugUrlByTitle($title);
$slugText = str_replace(' ', '_', $slugText);
$absoluteSlug = str_replace(' ', '_', $absoluteSlug);
if ($slugText !== $absoluteSlug) {
$title = Title::newFromText($absoluteSlug, $title->getNamespace());
}
}
}
@ -92,6 +92,13 @@ class Hooks {
$slugEncoded = Utils::encodeUriComponent($slugTitle->getPrefixedText());
$titleEncoded = Utils::encodeUriComponent($title->getPrefixedText());
var_dump([
'url' => $url,
'slugEncoded' => $slugEncoded,
'titleEncoded' => $titleEncoded
]);
$url = str_replace($titleEncoded, $slugEncoded, $url);
}
} catch (DBQueryError $ex) {

@ -344,6 +344,7 @@ class Utils {
self::$cache->delete(self::$cache->makeKey('slugurl2title', $oldUrl));
self::$cache->delete(self::$cache->makeKey('title2slug', $title));
self::$cache->delete(self::$cache->makeKey('title2slugurl', $title));
self::$cache->delete(self::$cache->makeKey('title2slugurlorig', $title));
return $url;
}
@ -371,6 +372,7 @@ class Utils {
self::$cache->delete(self::$cache->makeKey('slugurl2title', $oldData->url));
self::$cache->delete(self::$cache->makeKey('title2slug', $title));
self::$cache->delete(self::$cache->makeKey('title2slugurl', $title));
self::$cache->delete(self::$cache->makeKey('title2slugurlorig', $title));
return true;
} else {
return true;
@ -395,8 +397,8 @@ class Utils {
}
public static function encodeUriComponent($str) {
$entities = ['+', '%21', '%2A', '%27', '%28', '%29', '%3B', '%3A', '%40', '%26', '%3D', '%2B', '%24', '%2C', '%2F', '%3F', '%25', '%23', '%5B', '%5D'];
$replacements = ['_', '!', '*', "'", "(", ")", ";", ":", "@", "&", "=", "+", "$", ",", "/", "?", "%", "#", "[", "]"];
$entities = ['+', '%21', '%2A', '%27', '%28', '%29', '%3B', '%3A', '%40', '%3D', '%2B', '%24', '%2C', '%2F', '%3F', '%25', '%23', '%5B', '%5D'];
$replacements = ['_', '!', '*', "'", "(", ")", ";", ":", "@", "=", "+", "$", ",", "/", "?", "%", "#", "[", "]"];
return str_replace($entities, $replacements, implode("/", array_map("urlencode", explode("/", $str))));
}
@ -513,6 +515,8 @@ class Utils {
}
$str = implode('-', $strBuilder);
$str = preg_replace('/-([\x20-\x2f\x3a-\x40\x5b-\x60\x7a-\x7f])-/', '$1', $str);
$str = str_replace([' ', '&', '?', '!', '#', '%'], '-', $str);
$str = preg_replace('/-+/', '-', $str);
return $str;
}
}

Loading…
Cancel
Save