htaccess и перенаправление URL - PullRequest
1 голос
/ 06 января 2012

Я работаю над приложением MVC PHP.

Мой .htaccess:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule ^(.+)$ /mvc/index.php?url=$1 [QSA,L]

Мой index.php:

<?php

$url = $_REQUEST['url'];

echo $url;

Поэтому, когда я пишув URL что-то вроде (mysite.com/mvc/help), php печатает (справка) на главной странице.Это работает очень хорошо для всего, что я пишу в URL, как (mysite.com/mvc/index/log) возвращает (index / log), но если я пишу (mysite.com/mvc/index), то у меня нет ошибок, ноничего не отображается и $ url не установлен!

Надеюсь, я все объясню правильно.Приветствия

Редактировать: я сделал ошибку, (mysite.com/mvc/index/log) ничего не возвращает.Кажется, что если первое слово «index», оно не работает, потому что если URL похож (mysite.com/mvc/log/index), оно работает и возвращает (log / index).

ТакжеЯ добавил строку в index.php (print_r ($ _ GET);), которая возвращает пустой массив, когда URL-адрес похож (mysite.com/mvc/index/log или mysite.com/mvc/index), еслиэто может помочь ...

После небольшого исследования я думаю, что проблема в том, что слово "index" автоматически заполняется словами ".html" или ".php", и я не знаю, как получитьизбавиться от этого ...


Решение: Вот мой рабочий htaccess:

Options -Indexes +FollowSymLinks -Multiviews
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule ^(.*)$ /mvc/index.php?url=$1 [L]

Ответы [ 2 ]

1 голос
/ 07 января 2012

ОК. Я выяснил, как заставить это работать, похоже, мне нужна эта строка:

Options -Indexes +FollowSymLinks -Multiviews
0 голосов
/ 06 января 2012

Попробуйте изменить это на:

RewriteRule ^mvc/(.+) /mvc/index.php?url=$1 [QSA,L]

и измените $_REQUEST на $_GET:

$url = $_GET['url'];
...