如果您不想将所有可能的翻译列表(catalog-katalog,view-something等)包含到.htaccess文件中,则创建单独的php脚本将更容易,该脚本将处理路由。例如:
RewriteRule ^(en|de)/([^/]+)/(.+)\.html$ router.php?lang=$1§ion=$2&id=$3 [L,QSA]
router.php可能是例如:
<?php
// List of translations
$german = array(
'katalog' => 'catalog',
'something' => 'view',
...
);
// List of available sections
$allowed = array('catalog', 'view');
$section = $_GET['section'];
if ($_GET['lang'] === 'de') {
$section = isset($german[$section])? $german[$section] : NULL;
}
// IMPORTANT: Include PHP file only if section param is listed in $allowed!
// Otherwise attacker could execute any file on the server
// by opening /router.php?section=badfile
if (in_array($section, $allowed)) {
include dirname(__FILE__) . "/$section.php";
} else {
header('HTTP/1.x 404 Not Found');
print "Page not found";
}
你好,非常感谢您的回复!很好的解决方案,但最好我希望它在.htaccess –
如果你只有几个部分,你可以做一些像'RewriteRule^en/SECTIONNAME /(。+)\。html $ SECTIONSCRIPT.php?lang = en&id = $ 1 [ L,QSA]''为每种语言和部分组合,例如:'RewriteRule^de/katalog /(。+)\。html $ catalog.php?lang = de&id = $ 1 [L,QSA]' –