2013-08-08 2 views
0

내 htaccess에서 변환합니까? 다음과 같이 #을 사용하십시오 :다시 쓰기가 예상대로 작동하지 않습니다.

# The below 2 lines will convert a ? to a # in the query. 
RewriteCond %{REQUEST_URI} !^\/*(admin|access.php) 
RewriteCond %{QUERY_STRING} . 
RewriteRule ^(.*) /$1#%{QUERY_STRING}? [R=301,L,NE,NC] 

무엇이 변환됩니까? ~에 # URL이없는 한

/admin 
/access.php 

그래서 다음과 같은 URL을 얻을 수 없습니까? 변환 :

http://mysite.com/access.php?login=special 

그러나 이제는 검색 매개 변수에? (#가 아님) 사용을 허용해야합니다 :

http://mysite.com/?s=somesearchstring&submit=Search 

그리고 나는 그것을 작동 시키려고 노력하고 있습니다. 현재의 규칙으로? 개조되면 다음과 같이 끝납니다 :

http://mysite.com/#s=somesearchstring&submit=Search 

하지만 변환하지 않아도됩니까? #에.

제안 사항?

+0

나는 솔직히 당신이 원하는 것을 이해하지 못합니다 ... 당신은 처음으로 변환합니까? #, 그리고 네가 말하는 것보다 너는 그걸 원하지 않는다. 다시 쓰기 규칙을 제거하면 끝났습니다 ... 변환하려는 문자열의 일반적인 특징은 무엇입니까? 그것을 예외에 추가하십시오!^\/* (admin | access.php | someting) – Jeffrey

답변

1

변경

RewriteCond %{QUERY_STRING} . 

RewriteCond %{QUERY_STRING} !(^|&)s=.*?(&|$) 
RewriteCond %{QUERY_STRING} !(^|&)submit=Search(&|$) 

에이 두ssubmit이 존재 #경우에 ?를 수정하지 않습니다. 그들은 그들이 원하는 순서대로 나타날 수 있습니다.

+0

고마워요. 아래의 나의 대답은 효과가 있었지만 부족했다. 너는 완벽하다. – Stuart

+0

@ 스튜어트 환영합니다. –

0

그것은 다음과 같은 일을 추가 할 것으로 보인다 :

RewriteCond %{QUERY_STRING} !^s= 

을하지만 내가 걱정하는 몇 가지 문제가 발생할 수있는 이유에 대한 명확한 이해의 나의 부족.

쿼리 문자열

!(does not)^(start with)s= 

내가 아무것도 실종 경우 여기

내 이해입니까? 언뜻보기에는 내 문제를 해결하는 것처럼 보이지만 불완전하거나 오류가 발생하기 쉽습니다.

관련 문제