Подход, основанный на URL, должен корректно работать даже в подкаталогах.Поскольку вы упоминаете «подкаталоги», а не «контроллеры / действия», я предполагаю, что ваше приложение реализовано с помощью ASP.NET WebForms, а не MVC.
Если это так, вы перезаписываете свои запросы в своем * 1003.*:
public void Application_BeginRequest( object sender, EventArgs e )
{
HttpApplication app = (HttpApplication)sender;
HttpContext ctx = app.Context;
string PathAndQuery = ctx.Request.Url.PathAndQuery;
// parse the PathAndQuery and if it is of the form
// en/Subdir1/Subdir2/resource.aspx
// split it into [en] (virtual part) and [Subdir1/Subdir2/resource.aspx] (physical part)
string VirtualPart = GetVirtualPart( PathAndQuery );
string PhysicalPart = GetPhysicalPart( PathAndQuery );
ctx.RewritePath( PhysicalPart );
}
При таком подходе ваша физическая структура в файловой системе и запросы в форме en\Subdir1\Subdir2\resource.aspx
правильно перенаправляются на Subdir1\Subdir2\resource.aspx
.
Хотя в примере показано руководствопереписывая, вы можете использовать любую существующую технологию переписывания, если она соответствует вашим потребностям.
Это только начало.Однако, если у вас есть какие-то конкретные проблемы в реализации переписывания URL, я предполагаю, что вам придется задавать другие конкретные вопросы, чтобы люди могли помочь вам с конкретными проблемами.Если вы просто скажете Я провел несколько дней, а он не работает , то вам не удастся помочь вам с вашим конкретным подходом.