문제

저는 웹 개발 (및 대학)의 학생입니다. 그래서 이것이 순진하고 공격적으로 들리면 사과드립니다. 저의 경험은 PHP와 Horizon의 작은 프로젝트 (영광스러운 시프트 캘린더)에 대한 경험이있었습니다. 저는 코드 부담을 완화하기 위해 더 높은 수준의 프레임 워크 중 하나를 배우기를 바랐습니다. 지금까지 나는 Cakephp Symfony Django와 Rails를 보았습니다.

PHP를 사용하면 URL이 파일에 매우 간단하게 매핑되었으며 "방금 작동했습니다". 서버는 빠르고 직관적이었습니다. 그러나 이러한 모든 프레임 워크를 사용하면 URL을 다른 기능에 매핑하고 매개 변수를 다른 파일의 다른 변수로 라우팅하여 URL을 "예쁘게"하는 경향이 있습니다.

내가 읽고있는 "The Rails Way"책은 이것이 개가 느리고 큰 프로젝트에서 대부분의 성능 고통의 원인임을 인정합니다. 내 질문은 "왜 처음에는 왜 그런가요?"입니다. regexes 및 복잡한 라우팅 체계가 필요한 URL-Maps-to-a-File 패러다임 (또는 단일 파일에 대한 Mod_rewrite)에는 특정 지점이 있습니까? 그것들을 사용하지 않음으로써 무언가를 놓치고 있습니까?

미리 감사드립니다!

도움이 되었습니까?

해결책

  • URL은 기억하고 말하기 쉽습니다. 그리고 사용자는 그 URL을 볼 때 무엇을 기대 해야하는지 알아야합니다. URL을 파일에 직접 매핑한다고해서 항상 허용되는 것은 아닙니다.
  • 동일하거나 적어도 유사한 정보에 대해 다른 URL을 사용하고 싶을 수도 있습니다. 서버에서 1 url <-> 1 파일 매핑을 사용하도록하는 경우 모든 기능이 다른 파일로 리디렉션되도록 추가 파일을 만들어야합니다. 또는 당신은 같은 것을 사용합니다 mod_rewrite Rails의 URL 매핑은 쉽지 않습니다.
  • 내 응용 프로그램 중 하나에서 나는 URL을 사용합니다. http://www.example.com/사용자 이름/몇 가지 추가 물건/. 이것은 또한 만들 수 있습니다 mod_rewrite, 그러나 적어도 나에게는 Django 프로젝트에서 URL을 구성하는 것이 더 쉽습니다.

내 2 센트 ...

다른 팁

그것의 대부분은 이미 다루었지만 아직 SEO를 언급 한 사람은 없습니다. Google은 URL이 widgets.com/browse.php?17 인 경우 URL 자체에 많은 가중치를 부여합니다. URL이 widgets.com/products/buttons/ 인 경우 버튼의 페이지 순위에 긍정적 인 영향을 미칩니다.

웹 서버의 문서 트리에 응용 프로그램 코드를 저장하는 것은 보안 문제입니다.

  • 오해는 실수로 소스 코드를 방문자에게 공개 할 수 있습니다
  • 보안 취약점을 통해 주입 된 파일은 HTTP 요청에 의해 즉시 실행 가능합니다.
  • 백업 파일 (예 : 텍스트 편집기별로 생성)은 오해의 경우 코드를 표시하거나 실행할 수 있습니다.
  • 관리자가 삭제하지 못한 오래된 파일은 의도하지 않은 기능을 표시 할 수 있습니다.
  • 라이브러리 파일에 대한 요청은 명시 적으로 거부되어야합니다
  • URL은 구현 세부 사항을 공개합니다 (언어/프레임 워크가 사용 된 언어/프레임 워크)

위의 모든 내용은 다른 일이 잘못되지 않는 한 문제가되지 않습니다 (그리고 이러한 실수 중 일부는 혼자서도 심각 할 것입니다). 그러나 무언가가 항상 잘못되고 추가 방어선이 좋습니다.

Django URL도 매우 사용자 정의 할 수 있습니다. Code Igniter (레일에 대해 잘 모르겠다)와 같은 PHP 프레임 워크를 사용하면/class/method/extra/url 구조로 강제로 제공됩니다. 이것은 소규모 프로젝트와 앱에 좋을 수 있지만, 더 크거나 더 역동적으로 만들려고하자마자 문제를 해결하고 일부 프레임 워크 코드를 다시 작성하여 처리해야합니다.

또한 라우터는 비슷합니다 mod_rewrite, 그러나 훨씬 더 유연합니다. 그것들은 정규 표현으로 바운드가 아니므로 다른 유형의 경로에 대한 더 많은 옵션이 있습니다.

응용 프로그램이 얼마나 큰지에 따라 다릅니다. 우리는 상당히 큰 앱 (50+ 모델)을 가지고 있으며 문제가 발생하지 않습니다. 그렇다면, 우리는 그것에 대해 걱정할 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top