2012-11-05 3 views
2

이것이 가능한지 확실하지 않지만 어디에서나 해결책을 찾고 있습니다. 내 사이트에 다음과 같은 형식으로 자신의 정보를 볼 수 있습니다 도메인 이름과 사람에 대한 동적 정보를 생성URL에서 도메인 이름을 지우는 데 htaccess를 사용합니다.

http://www.mysite.com/analyze/yourdomain.com 

문제는 때때로 사람들이 HTTP를 입력하는 것입니다 : // 또는 WWW 또는 전체 URL을 대신 자신의 도메인으로, 이와 같은 : 내가 htaccess로 함께 할 싶은 무엇

http://www.mysite.com/analyze/http://www.yourdomain.com/this-is-a-test 

는 도메인 이름을 얻고 나열된 첫 번째 같은 적절한 URL로 리디렉션합니다.

내가 현재 내 htaccess로를 위해 무엇을 가지고 :

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^mysite.com$ 
RewriteCond %{REQUEST_URI} !\.(xml|txt)$ 
RewriteRule ^(.*)$ http://www.mysite.com/review/$1 [R=301,L] 

Options -MultiViews +FollowSymlinks -Indexes 

RewriteEngine on 
RewriteCond %{REQUEST_URI} !\.(xml|txt)$ 
RewriteRule ^([a-zA-Z0-9\.\-]+)$ review.php?site=$1 [L,QSA] 

나는 데 가장 큰 문제는 내가/제거 도메인을 리디렉션에 대해 찾을 수있는 모든 튜토리얼, 내 실제 도메인 이름이 아닌을 적용한다는 것입니다 사용자가 URL에 있습니다. 어떤 도움이라도 대단히 감사하겠습니다!

+0

> ** 사람들이 http : // 또는 www를 입력하는 경우가 있습니다 ** 직접 링크입니까, 사용자가 양식을 입력해야합니까? 양식의 경우 입력을 검증하는 것이 더 쉬워집니다. – GoodSp33d

+0

나는 폼을 가지고 완벽하게 작동하지만 많은 사람들은 수동으로 입력하고 404 오류를 얻는 경향이 있습니다. – user1135462

답변

0

한번에 바로 첫 번째 규칙 아래 THIE를 추가 (즉, 301 리디렉션) :

RewriteRule ^analyze/http:/+([^/]+)/? /analyze/$1 [L,R=301] 

http://www.mysite.com/analyze/http://www.yourdomain.com/this-is-a-test 같은 http://www.mysite.com/analyze/yourdomain.com에 요청을 리디렉션합니다.

+0

방금 ​​시도했는데 홈페이지에 404ing되어 있습니다 :/ – user1135462

+0

코드가 'http://www.mysite.com/analyze/http:/www.yourdomain.com/this-is-a-'로 리디렉션 된 것 같습니다. '기본적으로'/'를 제거하고 아마도 404를 유발할 것입니다. – user1135462

+0

@ user1135462 아파치는 복제 된 슬래시를 제거하므로 아파치가 수행하고 있습니다. 정규 표현식은이를 고려하여 변경해야했습니다. 'http : //'가'http :/+'로 바뀌도록 질문을 편집했습니다. –

관련 문제