.net - the - title seo length
¿Eliminando.aspx de las páginas usando rewriteModule? (3)
Estoy usando el módulo de reescritura de ASP .NET para volver a escribir http://example.com en http://www.example.com .
<section name="rewriteModule" type="RewriteModule.RewriteModuleSectionHandler, RewriteModule"/>
Entonces tengo esto dentro de <system.webServer>
.
<rewrite>
<rules>
<rule name="Canonical" stopProcessing="true">
<match url=".*"/>
<conditions>
<add input="{HTTP_HOST}" pattern="^([a-z]+[.]com)$"/>
</conditions>
<action type="Redirect" url="http://www.{C:0}/{R:0}" redirectType="Permanent"/>
</rule>
</rules>
</rewrite>
Ahora quiero eliminar todos los .aspx al final de mis páginas. Ejemplo:
http://www.example.com/Register.aspx
Se convertirá en:
http://www.example.com/Register/
¿Cómo puedo hacer eso?
Estoy en el Alojamiento web compartido en GoDaddy utilizando IIS7.
Estas son las reglas de reescritura estándar con las que comienzo cada proyecto. Solo uso URL limpias para todas las páginas (por ejemplo, la primera regla funciona para www.example.com/about y la segunda regla www.example.com/product/123)
<rewrite>
<rules>
<rule name="Rewrite default to aspx" stopProcessing="true">
<match url="^$" ignoreCase="false" />
<action type="Rewrite" url="default.aspx" />
</rule>
<rule name="Rewrite page to aspx" stopProcessing="true">
<match url="^([a-z0-9/]+)$" ignoreCase="false" />
<action type="Rewrite" url="{R:1}.aspx" />
</rule>
</rules>
</rewrite>
Páginas en las que necesito analizar la ID (solo este número de caso) y agregarla a la cadena de consulta. Agrego una regla similar al frente:
<rule name="Rewrite Product ID" stopProcessing="true">
<match url="^product/([0-9]+)$" ignoreCase="false"/>
<action type="Rewrite" url="product.aspx?id={R:1}"/>
</rule>
Si desea usar letras mayúsculas y minúsculas en la URL, configure ignoreCase = "true"
Editar para responder a su segunda pregunta más una bonificación
Esta regla redirigirá la página aspx a la URL limpia:
<rule name="Redirect to clean URL" stopProcessing="true">
<match url="^([a-z0-9/]+).aspx$" ignoreCase="true"/>
<action type="Redirect" url="{R:1}"/>
</rule>
Reemplace url = "{R: 1}" con url = "{ToLower: {R: 1}}" para cambiar la URL a minúsculas. Vea a continuación por qué querría hacer esto.
También es una buena idea actualizar la acción del Formulario para que los comentarios no regresen a la URL fea. Usando IIS 7.5 o más reciente esto debería funcionar:
if (!String.IsNullOrEmpty(Request.RawUrl))
form1.Action = Request.RawUrl;
o para IIS 7:
if (!String.IsNullOrEmpty(Context.Request.ServerVariables["HTTP_X_ORIGINAL_URL"]))
form1.Action = Context.Request.ServerVariables["HTTP_X_ORIGINAL_URL"];
Una cosa más a tener en cuenta ... es una buena idea mantener todas las URL en minúsculas. La combinación de caracteres en mayúsculas y minúsculas en la URL crea problemas de contenido duplicado para SEO / Google. Por ejemplo, website.com/About y website.com/about cargarán la misma página, pero Google los indexará como dos páginas separadas.
Primero debe eliminar el .aspx ( default.aspx ) y redirigir al valor predeterminado para cambiar la dirección del navegador, luego agregar el .aspx y volver a conectar a la página con IIS
<rewrite>
<rules>
<clear />
<rule name="Redirect to clean URL" enabled="true" stopProcessing="true">
<match url="^([a-z0-9/]+).aspx$" ignoreCase="true" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
<action type="Redirect" url="{R:1}" />
</rule>
<rule name="RewriteASPX" enabled="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="{R:1}.aspx" />
</rule>
</rules>
</rewrite>
<rewrite>
<rules>
<remove name="RewriteUserFriendlyURL1" />
<remove name="RedirectUserFriendlyURL1" />
<rule name="RedirectUserFriendlyURL2" stopProcessing="true">
<match url="^www/.myserver/.com/(.*)/.aspx$" />
<conditions>
<add input="{REQUEST_METHOD}" pattern="^POST$" negate="true" />
</conditions>
<action type="Redirect" url="www.myserver.com/{R:1}" appendQueryString="false" />
</rule>
<rule name="RewriteUserFriendlyURL2" stopProcessing="true">
<match url="^www/.myserver/.com/(.*)$" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="www.myserver.com/{R:1}.aspx" />
</rule>
</rules>
<outboundRules>
<remove name="OutboundRewriteUserFriendlyURL1" />
<rule name="OutboundRewriteUserFriendlyURL2" preCondition="ResponseIsHtml1">
<match filterByTags="A, Form, Img" pattern="^(.*)www/.myserver/.com/(.*)/.aspx$" />
<action type="Rewrite" value="www.myserver.com/{R:1}" />
</rule>
</outboundRules>
</rewrite>
Esto lo hará. He generado esto en IIS en mi máquina local. Cambie myserver.com a su propia URL. puede cambiar la expresión regular para que realmente se encargue de la parte x.aspx de la URL, entonces debería funcionar en todas las páginas