2014-12-30 3 views
3

У меня проблема с .htaccess, который переписывает мой url. Я создал простой динамический веб-сайт, и я не могу понять, как его исправить. Это мой Логин URL локальный/FOSS/то после успешной регистрации пользователь будет перенаправлен на локальный/FOSS/главный.htaccess ошибка перенаправления на другой каталог

вот код моего .htaccess

RewriteEngine on 
RewriteRule ^([a-zA-Z0-9_-]+)$ index.php?p=$1 
RewriteRule ^([a-zA-Z0-9_-]+)/$ index.php?p=$1 

и вот мой PHP, что ручка включить файлы в зависимости от значения p.

<?php 
    $page = $_GET['p']; 
    $pages = array('home', 'inv_view', 'inv_add', 'inv_delete', 'inv_edit', 's_view', 's_add', 's_delete', 'change_pass', 'register', 'logout'); 
    if (!empty($page)) 
    { 
     if(in_array($page, $pages)) 
      include $page . '.php'; 
     else 
      echo 'Page not found!'; 
    } 
    else 
     include 'home.php';   
?> 

это работает отлично, только странные вещи, происходящие, это после того, как пользователь перенаправляется на локальный хост/Фосс/основной, то .htaccess переписать URL к локальной машине/Фосс/основной /? Р = main, но когда я выбираю ссылку, например localhost/foss/main/home, она будет работать нормально. как я могу избавиться от? р = основной после входа пользователя в систему и перенаправляется на локальный/Фосс/главный

+1

Где Перенаправление на 'локальных/FOSS/main' происходит? – anubhava

+0

это было после успешного входа пользователя, localhost/foss/login.php и вот заголовок кода ('refresh: 5; url = main'); –

+0

@anubhava lol. это было легко. Я немного смутился с htaccess. main - это каталог, поэтому мне нужно/в конце. я прав? Кстати, спасибо. –

ответ

0

Причина, почему это поведение происходит потому, что mod_dir модуль работает после mod_rewrite и добавляя слэш перед каталог main/ после вашего правила перезаписи, и вы получите окончательный URL как localhost/foss/main/?p=main.

Чтобы устранить эту проблему, есть слэш в вашем теге обновления:

header('refresh: 5; url = main/'); 
Смежные вопросы