Итак, сайт, над которым я работаю, на самом деле японский, и все его папки / страницы находятся в папке public_html.Однако сайту теперь нужен английский, и в прошлом мы просто создавали папку с именем / eng / и делали копии файлов, которые будут использоваться на английской странице, и хранили их в тех же папках.Этот способ работает, но чувствует себя неэффективным.Особенно, если есть общие ресурсы / данные.
Идея, которую я придумал, заключается в использовании htaccess, и если первая папка URL содержит «eng /», то она будет каждый раз перезаписывать и открывать один и тот же первый файл.(сейчас я называю это eng-ini.php) и из этого файла он попытается открыть файл на английском языке.В основном разбираем URL и затем в конечном счете require_once ()
Для самих английских страниц я бы хотел поместить их в ту же папку, что и японские, используя те же имена с префиксом "eng".Например, если бы у нас был «/ faq /» (index.html опущен) для сайта на японском языке, английским был бы «/faq/eng-index.html".
Некоторые из проблем, которые я»у меня есть, если URL-запрос НЕ является файлом HTML или PHP, как справиться с этим?Если запрос является папкой, есть ли способ сделать его по умолчанию index.php или index.html?Прямо сейчас, с вышеупомянутым методом, похоже, что мне нужно добавить эту часть вручную для оператора require_once ().
Я пытался воссоздать то, что придумал, хотя в настоящее время я не могу получить доступ к исходному файлу, так как он находится на рабочем терминале.
Соответствующие части htaccess:
# Rewrites
<IfModule mod_rewrite.c>
# -- wwwありに統一
RewriteEngine On
#Remove multiple slashes in URLs
RewriteCond %{REQUEST_URI} ^(.*)//(.*)$
RewriteRule . %1/%2 [R=301,L]
#Add Trailing Slash to folders
RewriteCond %{REQUEST_URI} /+[^\.]+$
RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]
#Rewrite lang files
RewriteCond %{REQUEST_URI} !^/assets
# RewriteCond %{REQUEST_URI} \.(htm?l|php)$
RewriteRule ^(.*)$ pageini.php?$1 [QSA,L]
</IfModule>
Соответствующие части PHP:
<?php
$URLinfo['original'] = substr($_SERVER['REQUEST_URI'],1);
$URLinfo['original-split'] = explode('/',$URLinfo['original']);
//ENG page?
$bEng = ($URLinfo['original-split'][0] == "eng");
if($bEng == true)
{ $URLinfo['target'] = str_replace("eng/","",$URLinfo['original']);
$URLinfo['file-prefix'] = "eng-";
}
else
{ $URLinfo['target'] = $URLinfo['original'];
$URLinfo['file-prefix'] = "";
}
//Target path and file
$URLinfo['target-split'] = explode('/',$URLinfo['target']);
$URLinfo['target-file'] = end($URLinfo['target-split']);
if(empty($URLinfo['target-file']))
{ $URLinfo['target-file'] .= "index.php";
}
//Alt HTML for PHP
if($URLinfo['target-file'] === "index.php")
{ $URLinfo['target-file-alt'] = "index.html";
}
array_pop($URLinfo['target-split']);
$URLinfo['target-path'] = implode('/',$URLinfo['target-split']);
//Request file change
$URLinfo['request-file'][0] = $_SERVER['DOCUMENT_ROOT'] . "/" . $URLinfo['target-path'] . "/" . $URLinfo['file-prefix'] . $URLinfo['target-file'];
if(isset($URLinfo['target-file-alt']) && !empty($URLinfo['target-file-alt']))
{ $URLinfo['request-file'][1] = $_SERVER['DOCUMENT_ROOT'] . "/" . $URLinfo['target-path'] . "/". $URLinfo['file-prefix'] . $URLinfo['target-file-alt'];
}
// Does requested file exist?
if(file_exists($URLinfo['request-file'][0])===TRUE)
{ $usePageTarget = $URLinfo['request-file'][0];
}
elseif(isset($URLinfo['request-file'][1]) && file_exists($URLinfo['request-file'][1])===TRUE)
{ $usePageTarget = $URLinfo['request-file'][1];
}
if (isset($usePageTarget) && !empty($usePageTarget))
{ require_once ($_SERVER['DOCUMENT_ROOT'] . "/assets/inc/new-ini.tpl");
require_once ($usePageTarget);
exit;
}
else
{ header("HTTP/1.0 404 Not Found");
echo "File not found!";
exit;
// Require 404 file
# require_once('404.php');
}
exit;
?>