2014-06-18 2 views
0

PHP 파일의 전체 폴더를 83 개의 파일과 함께 더 친숙한 이름의 새 폴더로 변경했습니다. 들어오는 대부분의 URI는 명명 된 앵커 '#'을가집니다.리디렉션 폴더 및 부분 파일 이름

명명 된 앵커를 포함하여 이전 폴더/파일 이름의 링크를/filename으로 리디렉션해야합니다. 변경된 부분 이후의 URI 부분은 그대로 유지합니다.

리디렉션의 개별 줄을 사용하여 개별 파일을 만들 수 있지만 전체적으로 수행 할 수있는 방법이 있는지 궁금합니다.

변경 : mysite.com/folder1/filename1-(other 물건을 포함하여 지정된 앵커)

에 : 지정된 앵커를 포함 mysite.com/folder2/filename2-(other 물건)

몇 시간 동안 아카이브를 조사하고 Rewrite 및 Redirect에 대한 온라인 검색을했지만, 부분 파일 이름을 리디렉션하는 데는 아무 것도 언급하지 않았습니다.

RewriteCond/Rule 또는 Redirect를 작성하는 데 도움이 필요합니다. 제공된 모든 도움에 미리 감사드립니다.

(편집) Redirectmatch를 사용하여/folder1 /의 모든 페이지에 대한 모든 요청을/folder2 /의 기본 색인 페이지로 간단히 리디렉션하기로 결정했습니다. .

RedirectMatch에 ^/폴더 1/파일 이름 1 * $ http://example.com/folder2/index.php

+0

시도해 보셨습니까? 그렇다면 그것을 게시하십시오. – bloodyKnuckles

+0

정규 표현식이나 내가 무엇을 필요로하는지 다시 쓰기를 만드는 데 사용되는 것이 무엇인지 모르기 때문에 나는 아무것도 시도하지 않았습니다. –

+0

Apache가 웹 서버입니까? 그렇다면 .htaccess 파일에 액세스 할 수 있습니까? # 매개 변수를 리디렉션하는 경우 PHP, Perl 등과 같은 서버 스크립트를 사용하여 수행합니다. – bloodyKnuckles

답변

0

당신은 쓰기 : 디렉토리에 htaccess로 파일 내부

Change: mysite.com/folder1/filename1.php?a=1&b=2#3 
to:  mysite.com/folder2/filename2.php?a=1&b=2#3 

곳 Folder2 폴더가 상주, 가정 웹 루트 :

RewriteEngine On 
RewriteBase/

RewriteRule ^folder1/(.*)1-(\d+).php$ folder2/$12-$2.php [QSA,R=301,NC,L] 

이것은 folder1과 문자열, 숫자 1, 대시 및 하나 이상의 숫자가 일치합니다. 그런 다음 folder2에 이어 동일한 문자열, 숫자 2, 대시 및 정규식에서 캡처 된 하나 이상의 숫자로 리디렉션합니다.

쿼리 문자열과 해시 매개 변수는 QSA 플래그와 함께 전송됩니다.

+0

감사합니다. 예, 파일 이름의 접두어 부분을 다시 쓰는 방법이 있으면 가능합니다. "filename1"대 "filename2"는 전체 파일 이름이 아니므로 파일 이름의 일부만 다시 작성해야합니다. 나는 이것이 정규 표현식을 가지고 있어야한다는 것을 알았지 만, 그런 것은 나보다 훨씬 길다. –

+0

folder1이 존재하지 않습니다. 3 달 전에 이미 83 개 파일을 folder2로 이름을 바꾸고 옮겼습니다. 방금 folder1에 대한 몇 가지 예전 포럼 링크를 발견했으며 폴더 2로 전 세계로 리디렉션하려고합니다. 솔루션을 루트 htaccess에 넣으면 많은 또는 많은 리디렉션 전후입니까? –

+0

아니면 단순히 htaccess로 folder1을 재 작성한 다음 htaccess에만이 폴더를 만드시겠습니까? –

관련 문제