2014-01-18 5 views
0

htaccess 다시 쓰기 규칙을 만들어 파일이나 폴더가 실제로 없으면 동일한 브라우저에 URL을 보관해야하지만 example.php를 표시하도록하십시오. 내가 입력 한 URL을 확인하고 데이터베이스에 저장된 URL과 비교하여 적절한 페이지를 표시 할 수 있습니다. 요청 된 URL이 디렉토리/파일과 일치하지 않는 경우htaccess의 규칙을 해당 페이지 또는 디렉토리가없는 특정 페이지로 리디렉션

답변

0
RewriteEngine on 
RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ example.php?url=$1 [L] 

, 그것은 example.php 호출 (당신은 당신의 example.php 파일에서 $ _GET [ 'URL']와 URL을 얻을 수 있습니다.)

사용자에 대한 적절한 페이지를 찾을 수 있습니다 귀하의 비즈니스 로직을 수행하지만, 그렇지 않으면 모든 예로 리디렉션하는 것입니다,이 위에 다른 규칙을 넣어, 또한 404

를 전송하는 것을 잊지 마세요. PHP

아니면 다른 생각을 할 수있는 (더 적절하고 쉽게) :

ErrorDocument 404 /example.php 

그리고

과 example.php에서 요청 된 URL을 다시 얻을
$_SERVER['REQUEST_URI'] 
0

원하는 것은 정상적인 404 페이지입니다.

ErrorDocument 404 /example.php 

"example .php"페이지에서 페이지 요청을 받아야합니다.

<?php 
    $page = curPageURL(); 
?> 

지금 $ 페이지에서 당신은 사용자가 도달하기 위해 노력하고 깨진 주소를 가지고 당신은 당신이 그것으로 원하는 건 뭐든지 할 수 있습니다 사용

<?php 
function curPageURL() { 
$pageURL = 'http'; 
if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";} 
$pageURL .= "://"; 
if ($_SERVER["SERVER_PORT"] != "80") { 
    $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"]; 
} else { 
    $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]; 
} 
return $pageURL; 
} 
?> 

그리고 그것을 호출 기능 추가 예를 들어 데이터베이스에 저장되어있는 것과 비교하고 적절한 페이지를 표시하려고합니다. 개인적으로 나는 또한 사용자의 IP를 저장하여 사용자가 이상한 일을하고 있는지 확인합니다. 내 웹 사이트를 망쳐 놓는 것처럼 말입니다.

How to Get the Current Page URL (source)

관련 문제