Java и AngularJS в Google App Engine.
Что касается того, почему, хотя меня заверили, что большинство сканеров могут анализировать сайты javascript, они не полностью анализируют мой сайт angularjs и, следовательно, не индексируют его должным образом. Я создал статическую версию сайта и хочу перенаправить на нее условно на основе пользовательского агента. Он работает для всех URL-адресов, кроме корня моего сайта или localhost: 8080 с косой чертой или без нее.
Я думаю, это потому, что конфигурация для tuckey UrlRewriteFilter в моем файле web.xml имеет вид /*, поэтому он не срабатывает без косой черты в конце? Однако я пытался изменить это; Я перепробовал все, что мог придумать, изменив версию сервлета на 3.0, используя «файл приветствия», поставив пустую строку для шаблона URL и т. Д.
Спасибо за помощь.
Urlrewrite.xml:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 4.0//EN"
"http://www.tuckey.org/res/dtds/urlrewrite4.0.dtd">
<urlrewrite use-query-string="true">
<rule>
<condition name="user-agent">
facebookexternalhit/[0-9]|facebook|Googlebot|Googlebot-Mobile|
Mediapartners-Google|AdsBot(.*)|AdSense(.*)|(.*)AdsBot|(.*)AdSense|
Googlebot-Image|Googlebot-Video|Googlebot(.*)|
FacebookExternalHit/[0-9]|Mediapartners-Google|AdsBot-Google
|facebookexternalhit/1.0|FacebookExternalHit/1.1|
FacebookExternalHit/1.0|facebookexternalhit/1.1|Facebot|Twitter|Twitterbot|Pinterest
</condition>
<from>^/(.*)$</from>
<to>/staticview.jsp</to>
</rule>
</urlrewrite>
веб.xml:
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<filter>
<filter-name>UrlRewriteFilter</filter-name>
<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>UrlRewriteFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>appstats</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>appstats</filter-name>
<filter-class>com.google.appengine.tools.appstats.AppstatsFilter</filter-class>
<init-param>
<param-name>calculateRpcCosts</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<servlet>
<servlet-name>appstats</servlet-name>
<servlet-class>com.google.appengine.tools.appstats.AppstatsServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>appstats</servlet-name>
<url-pattern>/appstats/*</url-pattern>
</servlet-mapping>
<security-constraint>
<web-resource-collection>
<web-resource-name>appstats</web-resource-name>
<url-pattern>/appstats/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
<servlet>
<servlet-name>rss</servlet-name>
<servlet-class>com.byron.common.controller.RSSServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>rss</servlet-name>
<url-pattern>/rss</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>rssfull</servlet-name>
<servlet-class>com.byron.common.controller.FullRSSServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>rssfull</servlet-name>
<url-pattern>/rssfull</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>sitemap</servlet-name>
<servlet-class>com.byron.common.controller.SitemapServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>sitemap</servlet-name>
<url-pattern>/sitemap</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.feature.DisableWADL</param-name>
<param-value>true</param-value>
</init-param>
<!--
Please try to declare your resource classes statically in your Application implementation as
follows in order to minimize the startup time of your application.
-->
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>com.byron.common.controller.Resources</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
<welcome-file-list> <welcome-file>posts</welcome-file> </welcome-file-list>
С юзер-агентом гугла перенаправляет рут через посты и на мою статичную версию. Единственный способ, которым я добился рута - › статический. Однако сообщения не являются реальной конечной точкой, поэтому без агента я просто получаю 403 (запрещено) от корня, и в любом случае это кажется обходным путем. - person Kafe   schedule 15.01.2018