2016-09-26 9 views
1

저는 데이터베이스에 많은 게시물이 저장되어있는 음식 블로그 웹 사이트를 운영합니다. 누군가가 게시물에 대한 링크를 클릭하면 웹 사이트는 데이터베이스에서 게시물을 검색하여 템플릿에 표시합니다. 각 게시물마다 HTML 파일을 저장하지 않습니다.모든 요청을 단일 페이지로 리디렉션

지금 당장은 404 오류 (요청한 HTML 파일이 없기 때문에 발생합니다)를 처리하고 거기에서 데이터베이스를 검색합니다. 나는 이것이 옳지 않다는 것을 안다.

웹 서버 (Raspberry Pi에서 실행되는 Apache)를 설정하면 모든 요청이 한 페이지로 이동하여 검색을 수행하고 사용자를 올바른 페이지로 보낼 수 있습니다. 그리고 이것이 올바른 일입니까?

+0

htaccess 파일을 사용해 보았습니까? 예제를 추가 할 수 있습니까? – atoms

+0

가능한 [단일 PHP 파일이 GET/POST 변수에 따라 데이터를 표시 할 수 있도록 htaccess rewrite/redirect 사용]의 복제본 (http://stackoverflow.com/questions/2441140/using-htaccess-rewrite-redirect-so-single-php -file-can-display-data-by-to) – emiliopedrollo

답변

0

공개 루트 디렉토리에서 적절한 .htaccess 규칙이 필요하며 apache2 mod_rewrite 모듈이 활성화되어 있어야합니다.

우분투에

다음과 같은 명령을 사용할 수 있습니다 :

sudo a2enmod rewrite 

당신의 .htaccess 파일처럼 보일 수있는 다음 :

<IfModule mod_rewrite.c> 
    <IfModule mod_negotiation.c> 
     Options -MultiViews 
    </IfModule> 

    RewriteEngine On 

    # Redirect Trailing Slashes If Not A Folder... 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)/$ /$1 [L,R=301] 

    # Handle Front Controller... 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule^index.php [L] 

    # Handle Authorization Header 
    RewriteCond %{HTTP:Authorization} . 
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] 
</IfModule> 
1

파일 당신이에 넣어 당신은 할 수있다 귀하의 웹 사이트 루트는 .htaccess이며 mod_rewrite 모듈을 사용합니다. .htaccess 및 mod_rewrite가 Apache 구성에서 사용 가능하게 설정되어 있는지 확인해야합니다. 그러나 한 번 이런 식으로 뭔가를 할 수있는 사용 : 요청을 처리하는 데 사용할 수 있습니다 index.php에 실제 존재하는 파일이나 디렉토리를 참조하지 않는 URL을 다시 작성합니다

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /index.php?path=$1 [NC,L,QSA] 

.

예를 들어 누군가 http://yourdomain.com/article을 방문하면 경로는 내부적으로 index.php?path=article으로 다시 작성되며 $_GET['path']을 사용하여 경로에 액세스 할 수 있습니다.

참고 : 단일 진입 점을 통해 모든 것을 제공하려면 두 중간 선을 제거하면 모든 것이 전송됩니다. 일반적으로 원하지 않는 이미지, 스크립트, CSS 등을 포함합니다.

관련 문제