RewriteCond %{REQUEST_URI} !^/?new.php?url
RewriteRule ^/?(.+)\.?(.+)$ new.php?url=$0 [L]
은 단지 첫 번째 백 참조 $1
하지왜이 URL이 제대로 다시 작성되지 않습니까?
RewriteCond %{REQUEST_URI} !^/?new.php?url
RewriteRule ^/?(.+)\.?(.+)$ new.php?url=$0 [L]
은 단지 첫 번째 백 참조 $1
하지왜이 URL이 제대로 다시 작성되지 않습니까?
new.php하려고 계속하지만 어떤 URL을
mysite.com/someurl
을 가지고
new.php?url=someurl
로 변환되어 $0
AFAIK. 그게 아니라면 [QSA]를 지정해보십시오. 의심 스럽지만 말입니다.
RewriteCond %{REQUEST_URI} !^/?new.php?url
RewriteRule ^/?(.+)\.?(.+)$ new.php?url=$1 [L]
첫 번째 참조는 $ 0 대신 $ 1이어야합니다.
RewriteCond %{REQUEST_URI} !^/?new.php?url
RewriteRule ^/?(.+)\.?(.+)$ new.php?url=$1 [L]
또한 파일에있는 다른 코드 행에 따라 다릅니다. 충돌하는 다른 코드가 있으면 재 작성을 망칠 수도 있습니다.
RewriteCond %{REQUEST_URI} !^/?new.php\?url
또한 두 번째 줄에 괄호 그룹을 사용하지 않는 :
당신은 문자 그대로 물음표를 일치하도록 첫 번째 줄의 두 번째 물음표를 탈출해야합니다. $0
이 괜찮 으면, 아니면 $1
을 원할 수도 있습니다. 당신이 $0
를 사용하는 경우 당신이 그것을 무리를 단순화 수 :
RewriteRule ^.*$ new.php?url=$0 [L]
아니면 내가 약간의 변경 수정을 제안 이유의 URL을 떨어져 파괴하는 경우 반면에
. 파일 이름과 확장명을 정확하게 일치시키지 않습니다. 이와 같은 좀 더 복잡한 정규식은 아마 더 나은 서비스를 할 것 :RewriteRule ^/?(.*?)(?:\.([^.]*))?$ new.php?path=$1&extension=$2 [L]
설명 :
(.*?)
디렉토리 및 파일 이름과 일치합니다. ?
은 탐욕스럽지 않게 일치하므로 다음 부분과 일치하는 즉시 중지하십시오. 괄호로 인해 캡처되고 $1
에 저장됩니다.
(?:\.([^.]*))?
은 파일 확장자와 일치합니다. ?:
turns는 바깥 쪽 괄호 세트를 캡처하지 않기 때문에 도트는 $2
에 캡처되지 않습니다. ([^.]*)
은 확장자와 일치하고 점이 포함되지 않도록합니다. 최종 ?
은 파일 확장자 부분을 선택적으로 만듭니다. 모든 URL에 파일 확장자가있는 것은 아닙니다. 따라서 파일 확장자가있는 경우에만 $2
이 표시됩니다.
가능한 중복 : http://stackoverflow.com/questions/1616719/need-a-regex-to-match-url-without-http-https-ftp, http://stackoverflow.com/questions/1616770/help-rewriting-this-url-simple-but-not-working – Gumbo