2012-03-31 1 views
0
내 모바일 사이트 (워드 프레스에 의해 영감을 작은 사용자 정의 CMS)는 홈페이지, 블로그 페이지, 뉴스 페이지 약 페이지 ./blog ./news ./about./contact 실제 폴더입니다 연락처 페이지가

. 홈페이지, 블로그뉴스은 페이지가 매겨집니다. 문의은 페이지 매김이없고 페이지 매김이 아닙니다.여러 htaccess로 다시 쓰기 규칙

다음 (A) 및 (B)를 수행하려면 htaccess 다시 쓰기 규칙이 필요합니다. 나는 (A)로만 진행했고 htaccess 파일은 사이트 루트에 있습니다. m.website.com/blog/page/2-m.website.com/blog

  • m.website.com/blog/index.php?page=2 재기록에 m.website.com/page/2
  • m.website.com/blog/index.php?page=1 재기록에

    (A)

    • m.website.com/index.php?page=1 재기록 m.website.com
    • m.website.com/index.php?page=2 재기록
    • m.website.com/news/page/2

    문제에 m.website.com/news

  • m.website.com/news/index.php?page=2 재 작성에
  • m.website.com/news/index.php?page=1 재 작성 : 아래 내가 위의에 사용하고있어,하지만 난 단지 그것은 홈페이지 일하고있어 현재입니다. 나는 블로그뉴스 페이지를 포함하는 규칙을 결합하는 법도 모르겠다. 또한 m.website.comm.website.com/page/1이 모두 사용 중이므로 링크가 중복됩니다. 나는 도처에 /page/1를 제거해야한다. 페이지 매김은 2 페이지에서만 시작해야합니다. RedirectMatch를 사용하여 제거하려고했으나 작동하지 않아서 주석 처리했습니다.

    RewriteEngine On 
    RewriteBase/
    RewriteRule ^page/(.*) index.php?page=$1 [NC] 
    #RedirectMatch 301 ^/page/1/$ http://m.website.com/ 
    

    이미 꽤 URL을 허용하고 집에 자신의 postIDs 각 기사에 대한

  • 읽기 - 더 링크를 반환하는 permalink.php 파일이

    • (B), 블로그 또는 뉴스 페이지의 형식은 http://m.website.com/2012/03/the-post-title
    • 입니다. 클릭하면 htaccess는 /2012/03/the-post-title 문자열로 permalink.php를 쿼리하여 postID를 얻은 다음을 엽니 다. 0 이지만은 주소 표시 줄의 주소가 http://m.website.com/2012/03/the-post-title이고 홈 페이지, 블로그 페이지 또는 뉴스 페이지가 전체 기사를 표시합니다.

    문제 :이 검색되었고, 나는 위의 (B)에 대해 이동하는 방법을 정확히 모르겠어요하지만 난 그게 가능 알고. 결국 A와 B에 대한 모든 규칙은 사이트 루트의 동일한 htaccess 파일에 있습니다.

    감사합니다.

  • +0

    가장 깨끗한 솔루션은 정적 리소스가 아닌 모든 요청을 PHP 스크립트로 리디렉션하는 단일 다시 쓰기 규칙 만 사용하여 모든 URL 구문 분석 등을 수행합니다. – ThiefMaster

    +0

    @ThiefMaster Thanks. 그러나 홈 페이지, 블로그 페이지 및 다른 쿼리와 물건을 가지고있는 뉴스 페이지에 대해 3 개의 PHP 파일 (index.php)이 있습니다. 단일 다시 쓰기 규칙은 어떻게 작동합니까? – Cogicero

    +0

    다른 PHP 파일을 통해 모든 것을 라우팅 한 다음 적절한 파일을 포함시킵니다. – ThiefMaster

    답변

    2

    이것은 당신을위한 속임수입니다. 당신이 할 일이 그렇게 많지 않은 것처럼 보입니다.

    RewriteEngine On 
    RewriteBase/
    
    # you do not need a rewrite for the root as you should have index.php 
    # as your default document and page 1 as your default page 
    
    RewriteRule ^page/1/?$     /[NC,L,R=301] 
    RewriteRule ^page/(\d+)/?$    index.php?page=$1 [NC,L] 
    
    # you do not need a rewrite for blog as you should have index.php as your 
    # default document and page 1 as your default page 
    
    # you do not need a rewrite for news as you should have index.php as your 
    # default document and page 1 as your default page 
    
    RewriteRule ^(blog|news)/page/1/?$  $1 [NC,L,R=301] 
    RewriteRule ^(blog|news)/page/(\d+)/?$ $1/index.php?page=$2 [NC,L] 
    
    ###################################################################### 
    ################## ADD YOUR PERMALINK.PHP CODE HERE ################## 
    ###################################################################### 
    

    UPDATE 효과적으로 켜려면/2012/03/당신이이를 알고있는 유일한 방법이기 때문에 당신을 위해 그렇게 할 데이터베이스를 요청 할 수있을 필요가 postID에 포스트 제목 대답. 그래서 당신도 사용할 수 있습니다 RewriteMaphttp://httpd.apache.org/docs/2.3/rewrite/rewritemap.html#dbd 나는 이것을 한 번도 해 본 적이 없으며 반대 의견을 제시합니다. 내가 거기에 문제가 있다는 것을 알고 있기 때문에 나는 단지 불량한 느낌이있다..

    RewriteRule ^(\d{4})/(\d{2})/([^/]+))/?$  article.php?postIdentifier=$1/$2/$3 [L] 
    

    다음 article.php의 데이터베이스를 쳤고 정확한 기사를 얻을 수있는 postIdentifier의 정보를 사용하여 -이 :

    대체 한 나는 것 챔피언은 같은 것을 할 것입니다.

    의미가 있습니까?

    +0

    안녕 Baynezy, 고마워! 나는 이것을 시험하고 받아들이 길 원하지만, 위는 내 문제의 (A) 부분만을 해결하는 것으로 보입니다. B 부분에 대해서는 예쁜 URL permalink를 postID로 다시 작성하려면 어떻게해야합니까? 문제에 대한 설명이 필요하면 알려주십시오. – Cogicero

    +0

    @Cogicero 내 업데이트 – baynezy

    +0

    을 참조하십시오. 감사합니다 Baynezy! 나는 지금 당장 그것을 시도 할 것이다. 나는 하나의 실수를 저질렀다는 것을 깨달았다. 응용 프로그램은 메인 사이트의'./application/demo' 하위 폴더에 있으므로 RewriteBase는 /가 될 수 없습니다 (?)'RewriteBase/application/demo /'를 시도했지만 모든 다시 쓰기가 작동하지 않았습니다 . 당신은 저에게 여기에, 코멘트에서 저에게 충고를 해주시겠습니까? 나는 이것이 효과가 있다고 생각하며, 바로 받아 들일 것이다. – Cogicero