İpucu

Google Arama Bot için jsessionid parametresinin kaldırılması

Jboss Seam'de URL'lere ;jsessionid=xxxxxxxxxxxxx şeklinde bir parametre eklenmektedir. Google Bot'u web sitesini indexlediğinde bu jsessionid parametreleri URL'e dahil etmektedir ve bu değer değiştiğinden aynı URL'i farklı bir URL gibi görmektedir. Bunu engelmek için aşağıdaki gibi bir Filter kullanabilsiniz.  Ayrıca bu filter /a4j/s/ ile başlayan URL'lerden de jsessionid parametresini kaldırmaktadır. 

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class DisableUrlSessionFilter implements Filter {
	private static final String GOOGLEBOT_AGENT_STRING = "googlebot";
	private static final String USER_AGENT_HEADER_NAME = "User-Agent";
	public void doFilter(final ServletRequest pRequest,
			final ServletResponse pResponse, final FilterChain pChain)
			throws IOException, ServletException {

		if (!(pRequest instanceof HttpServletRequest)) {
			pChain.doFilter(pRequest, pResponse);
			return;
		}

		HttpServletRequest httpRequest = (HttpServletRequest) pRequest;
		HttpServletResponse httpResponse = (HttpServletResponse) pResponse;

		boolean isGoogleBot = false;
		if (httpRequest != null) {
			String userAgent = httpRequest.getHeader(USER_AGENT_HEADER_NAME);
			if (userAgent != null && userAgent.length() > 0) {
				if (userAgent.toLowerCase().indexOf(GOOGLEBOT_AGENT_STRING) > -1) {
					isGoogleBot = true;
				}
			}
		}
		
		boolean isXCSSFiles = false;
		
		String requestURL=httpRequest.getRequestURL().toString();
		if(requestURL.indexOf("/a4j/s/")!=-1){
			isXCSSFiles=true;			
		}
		
		if (isGoogleBot || isXCSSFiles) {
			
			HttpServletResponseWrapper wrappedResponse = new 
					HttpServletResponseWrapper(httpResponse) {
				@Override
				public String encodeRedirectUrl(final String url) {
					return url;
				}

				@Override
				public String encodeRedirectURL(final String url) {
					return url;
				}

				@Override
				public String encodeUrl(final String url) {
					return url;
				}

				@Override
				public String encodeURL(final String url) {
					return url;
				}
			};
			pChain.doFilter(pRequest, wrappedResponse);
		} else {
			pChain.doFilter(pRequest, pResponse);
		}
	}

	public void init(final FilterConfig pConfig) throws ServletException {}
	public void destroy() {}	
	
}
zafer.teker , 27.09.2014

Bu Sayfayı Paylaş:

Fibiler Üyelerinin Yorumları


Tüm üyeler içeriklere yorum ekleyerek katkıda bulunabilir : Yorum Gir

Misafir Yorumları




Bu Sayfayı Paylaş:

İletişim Bilgileri

Takip Et

Her Hakkı Saklıdır. Bu sitede yayınlanan tüm bilgi ve fikirlerin kullanımından fibiler.com sorumlu değildir. Bu sitede üretilmiş , derlenmiş içerikleri, fibiler.com'u kaynak göstermek koşuluyla kendi sitenizde kullanılabilirsiniz. Ancak telif hakkı olan içeriklerin hakları sahiplerine aittir