вы должны использовать
double g=1.0/3;
или
double g=1/3.0;
Целочисленное деление возвращает целое число.
Я пошел со следующим решением в прошлом, когда я не смог изменить настройки IIS.
Любой в HTTPModule (вероятно, самый чистый), или global.asax.cs в Application_BeginRequest или в некотором BasePage вводит событие, такое как OnInit, я выполняю проверку против требуемого URL с известной строкой, которую я хочу использовать:
public class SeoUrls : IHttpModule
{
#region IHttpModule Members
public void Init(HttpApplication context)
{
context.PreRequestHandlerExecute += OnPreRequestHandlerExecute;
}
public void Dispose()
{
}
#endregion
private void OnPreRequestHandlerExecute(object sender, EventArgs e)
{
HttpContext ctx = ((HttpApplication) sender).Context;
IHttpHandler handler = ctx.Handler;
// Only worry about redirecting pages at this point
// static files might be coming from a different domain
if (handler is Page)
{
if (Ctx.Request.Url.Host != WebConfigurationManager.AppSettings["FullHost"])
{
UriBuilder uri = new UriBuilder(ctx.Request.Url);
uri.Host = WebConfigurationManager.AppSettings["FullHost"];
// Perform a permanent redirect - I've generally implemented this as an
// extension method so I can use Response.PermanentRedirect(uri)
// but expanded here for obviousness:
response.AddHeader("Location", uri);
response.StatusCode = 301;
response.StatusDescription = "Moved Permanently";
response.End();
}
}
}
}
Затем регистрируют класс в Вашем web.config:
<httpModules>
[...]
<add type="[Namespace.]SeoUrls, [AssemblyName], [Version=x.x.x.x, Culture=neutral, PublicKeyToken=933d439bb833333a]" name="SeoUrls"/>
</httpModules>
Этот метод работает вполне хорошо на нас.
Существует сообщение в блоге Stackoverflow об этом.
http://blog.stackoverflow.com/2008/06/dropping-the-www-prefix/
Заключение в кавычки Jeff:
Here’s IIS7 управляют для удаления префикса WWW из всех входящих URL. Вырежьте и вставьте этот фрагмент XML в свой web.config файл под
<system.webServer> / <rewrite> / <rules> <rule name="Remove WWW prefix" > <match url="(.*)" ignoreCase="true" /> <conditions> <add input="{HTTP_HOST}" pattern="^www\.domain\.com" /> </conditions> <action type="Redirect" url="http://domain.com/{R:1}" redirectType="Permanent" /> </rule>
Или, если Вы предпочитаете использовать www префикс, можно сделать это также:
<rule name="Add WWW prefix" > <match url="(.*)" ignoreCase="true" /> <conditions> <add input="{HTTP_HOST}" pattern="^domain\.com" /> </conditions> <action type="Redirect" url="http://www.domain.com/{R:1}" redirectType="Permanent" /> </rule>
Принятый ответ работает для одного или нескольких URL-адресов, но мое приложение обслуживает сотни доменных имен (слишком много URL-адресов для ввода вручную).
Вот мой IIS7 Правило модуля перезаписи URL (здесь тип действия - это перенаправление 301, а не «перезапись»). Прекрасно работает:
<rule name="Add WWW prefix" >
<match url="(.*)" ignoreCase="true" />
<conditions>
<add input="{HTTP_HOST}" negate="true" pattern="^www\.(.+)$" />
</conditions>
<action type="Redirect" url="http://www.{HTTP_HOST}/{R:1}"
appendQueryString="true" redirectType="Permanent" />
</rule>
Это обычно обрабатывается Вашим веб-сервером непосредственно в конфигурации. Как Вы упомянули, .htaccess файл делает это для веб-сервера Apache - он не имеет никакого отношения к PHP. Так как Вы используете ASP, это - близкая уверенность, Вашим сервером является IIS. Я знаю, что существует способ настроить это прямое с IIS, но я не знаю, каково это. Вам можно помочь в Вашем поиске путем знания, что необходимо гуглить для вещей, связанных с "перенаправлением IIS", не "перенаправлением ASP".
Тем не менее Вы CAN делает это в PHP, и почти наверняка ASP также, но у Вас должен будет быть удар любого URL в неправильном домене, вызывает сценарий ASP, который выполняет операцию перенаправления (использующий соответствующие вызовы API или путем установки заголовков непосредственно). Это требует некоторой перезаписи URL или somesuch со стороны сервера так, чтобы все URL на неправильном хосте были обработаны Вашим сценарием..., просто делают это непосредственно в сервере во-первых :)
Мы сделали это на IIS 6 вполне просто. Мы по существу создали второй виртуальный сервер, который ничего не имел на нем, чем пользовательские 404 страницы .aspx страница. Эта страница поймала любые запросы на WHATEVERSERVER.com/whateverpage.aspx и перенаправила к реальному серверу путем изменения URL, чтобы быть www.whateverserver.com/whateverpage.aspx.
Довольно простой установить, и имеет преимущество, что оно будет работать с любыми доменами, которые входят к нему (если у Вас есть несколько доменов, например), не имея необходимость устанавливать дополнительные правила для каждого. Таким образом, любые запросы на www.myoldserver.com/xxx будут также перенаправлены на www.whateverserver.com/xxx
В IIS 7, все это может быть сделано с компонентом записи URL, но мы предпочитаем избегать перенаправления на этом виртуальном сервере.
Чтобы ответить на этот вопрос, мы должны сначала вспомнить определение WWW:
World Wide Web: п. Abbr. WWW
Вкратце, использование поддомена www является избыточным и требует много времени для связи. Интернет, СМИ и общество будут жить без этого.
Используя ссылки в верхней части страницы, вы можете просматривать недавно проверенные домены, а также отправлять домены для проверки в реальном времени.
Веб-сервер Apache:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
Windows Server / IIS:
Это невозможно.
Вы можете использовать Url Rewriter из Code Plex . С таким же синтаксисом.
RewriteCond %{HTTP_HOST} !^(www).*$ [NC]
RewriteRule ^(.*)$ http://www.%1$1 [R=301]