Я работаю над приложением 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]