2017-12-28 30 views
1

에서 내 URL을 다시 작성하는 방법이 있나요 :mod_rewrite와 .htaccess를 사용하지 않고 URL을 다시 쓸 수있는 방법이 있습니까?

http://www.website.com/notification.php

http://www.website.com/notification

에 내가 mod_rewrite를 켜 권한과 우리 조직 나던 중 원하는을 가지고 있겠지. PHP로만 이것을 실현할 수있는 방법이 있습니까? 사전

+0

물론 당신처럼 마음 URL을 해달라고하면'/ index.php에/notification' –

+0

이있어 순수 PHP 라우터 (예 : [nikic/빠른 경로 (https://packagist.org/packages/nikic/fast-route)). 그러나'mod_rewrite'가 없으면'http : //example.com/index.php?/foo/bar' 나'http : //example.com/index.php?/foo/bar'와 같은 것들로 끝날 수 있기 때문에 라우팅 스크립트 자체를 완전히 숨기는 것은 쉽지 않습니다. //예.co.kr/index/foo/bar' 파일을 사용하실 수 있습니다. 또한 새 프로젝트에서만 가능할 수도있는 라우팅 기능 위에 코드를 작성해야합니다. 'mod_rewrite'는 어쨌든 꽤 기본적인 도구이기 때문에 조직 프로젝트의 전반적인 품질을 알 수 있습니다 ;-) –

+0

답장을 보내 주셔서 감사합니다 ... 제 클라이언트는 아파치에 대한 액세스 SSh를 제공합니다 ..하지만 모드를 다시 작성하고 my virtuellehost의 디렉토리에 Alloverride All을 추가합니다. 서버 구성 오류가 500 번 발생 했습니까? 프로젝트 디렉토리에 thh. htacess를 추가 한 후 –

답변

0

당신은 단지 몇 페이지가있는 경우에

덕분에, 당신은 당신의 파일 index.php 이름을 변경하고 원하는 이름으로 그것을 내부 디렉토리를 이동할 수 있습니다.

그래서 notification.phpnotification/index.php되고 당신은 URL /notification 또는 /notification/으로 액세스 할 수 있습니다.

이 방법의 단점은 지저분한 폴더 구조를 가지며 모든 파일의 이름이 index.php라는 것입니다. 실제 스크립트를 호출하는 각 폴더 안에 래퍼 파일을 넣으면 나중에 문제가 발생할 수 있지만 폴더 구조는 그대로 유지됩니다.


다른 방법은 ?로 시작하는 URL을 다시 작성 의사의 어떤 종류를 사용하는 것입니다. 따라서 website.com/?notification과 같은 파일에 액세스 할 수 있습니다. 이 경우 index.php에있는 모든 라우팅 논리를 /에 위치시켜야합니다. 이것에 대한 좋은 부분은 당신의 URL이 유연하게 유지되고 이상한 파일 시스템 구조를 만들 필요가 없다는 것입니다. 나쁜 점은 각 URL에 물음표를 써야한다는 것입니다.

+0

질문에 대답 할 수 있습니까? '/ notification.php'를'/ notification'에 추가하면 대답은 ** 불가능합니다. 주변에서 일하는 것은 아닙니다. –

+0

답장을 보내 주셔서 감사합니다 ... 내 클라이언트가 아파치에게 confingure에 액세스 SSh를 제공 ..하지만 모드를 재작 성하고 내 virtuellehost에 디렉토리에 Alloverride 모두를 추가하면 오류 500 서버 잘못 생각했다 ? 내가 프로젝트 디렉토리에 thh .htacess를 추가 한 후 .. –

0

난 당신이 "간단하게"할 수 있다고 생각합니까 :

<Location "/notification"> 
    SetHandler application/x-httpd-php 
</Location> 
,536을

이렇게하면 REQUEST_URI 을 많이 사용하기 때문에 유연한 요청 라우터를 사용하시기 바랍니다.. 아파치가 파일이나 AFAIK를 찾지 않아도되므로 정적 리소스 (이미지, 스타일 시트, js 등)를 직접 반환해야합니다.

.htaccess 파일에서 사용할 수있는 것처럼 보이지만 서버의 기본 구성을 고칠 필요가 없습니다.

참조 : https://httpd.apache.org/docs/2.4/mod/core.html#sethandler

+0

답장을 보내 주셔서 감사합니다 ... 내 클라이언트는 아파치에게 confingure에 SSh 액세스 권한을 부여합니다.하지만 모드 재 작성을 활성화하고 Alloverride All을 디렉토리에 추가하면 내 virtuellehost 내가 잘못 500 서버 잘못 생각했다? 프로젝트 디렉토리에 .htacess를 추가 한 후 –