를 작동하지 (404)의 원인이 다음몇 가지 재 작성 규칙, 내가하고 프런트 컨트롤러가 제대로
내가http://localhost/folder/login를 방문하면 다음
$pages = array('home', 'login', 'create-account', 'activate');
$page = ((empty($_GET['p'])) ? 'home' : $_GET['p']);
if (in_array($page, $pages) && file_exists($page . '.php'))
include $page . '.php';
else
include '404.php';
나는이 mod_rewrite
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-z-]+)$ index.php?p=$1 [L]
RewriteRule ^(activate)/([\w-]+)$ index.php?p=$1&f=$2
이
작동 방식 :
내가 방문하는 경우 : 404 페이지로 저를 보내지 않고, (P 나의 정의)
http://localhost/folder/는 $$$$
그것은 나에게 실제 404을 줄 것이다. ? 이는 다시 쓰기 규칙이다
- - $의 index.php를 p = $ 1 [L]에만 AZ 및 수용 이후한다 RewriteRule^(+ [AZ])
을 난에 재 기입하면
RewriteRule ^(.*)$ index.php?p=$1 [L]
그것은 일을하고 (404)에 보내지 만 다음이 재 작동하지 않을 것입니다 :
RewriteRule ^(activate)/([\w-]+)$ index.php?p=$1&f=$2
을 처음 의지의 일치입니다.
나는 장소 변경하려고하는 경우 :
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(activate)/([\w-]+)$ index.php?p=$1&f=$2 [L]
RewriteRule ^(.*)$ index.php?p=$1 [L]
나는 모든 페이지에 404를 얻고있다.
어떻게 해결할 수 있습니까?
다시 쓰기 규칙은 소문자와 대시 만 찾고있는 것 같습니다. – OmnipotentEntity
전체 질문을 읽어주십시오. – John
'RewriteRule^([^ /] *) $ index.php? p = $ 1'을 사용하면 어떤 문자열도 /에서 제외시킬 수 있습니다. 따라서 첫 번째 문자열은 다시 작동합니다./쓰레기와 함께 쓰레기에 빠지지 않을거야. – OmnipotentEntity