Как изменить маршрутизацию URI для сайта MVC PHP? - PullRequest
1 голос
/ 04 июня 2011

Я пытаюсь переписать сайт ASP.NET MVC 2, созданный с использованием PHP / Apache, для развлечения.

Я создал базовую инфраструктуру MVC, которая обслуживает запросы. Запрос выполняется через index.php? Controller = & action = & otherstuff = 123123

Я бы хотел иметь возможность перемещаться по моему сайту, набрав / controller / action? Otherstuff = 123123

Веб-хост поддерживает mod_rewrite, могу ли я установить это, используя файл .htaccess в том же месте, что и скрипт index.php? Как мне заставить это работать?

Ответы [ 3 ]

2 голосов
/ 04 июня 2011

Попробуйте это:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/([^/]+)/([^/]+)?otherstuff=(.*)^ index.php?controller=$1&action=$2&otherstuff=$3 [L]
1 голос
/ 04 июня 2011

Думаю, я бы порекомендовал вам использовать директиву Query String Append / qsa .Это означает, что если строка запроса не будет передана, перезапись продолжит работать нормально.

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/([^/]+)/([^/]+)$ index.php?controller=$1&action=$2 [qsa,last]

Таким образом, если вы решите использовать больше строк запроса позже, просто продолжайте - они передадут их.

G

1 голос
/ 04 июня 2011

Это то, что я использую. Каркас разбирает маршрут.

<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} !=/favicon.ico
    RewriteRule .* index.php/$0 [PT]
</IfModule>
...