Возможный дубликат:
Все, что вы когда-либо хотели знать о правилах Mod_Rewrite, но боялись спросить?
Я Я пытаюсь использовать следующие правила перезаписи .htaccess, но по какой-то причине они просто не работают.
RewriteEngine On
RewriteRule ^/([^/]+)/([^/]+)(.*) /index.php?_controller=$1&_action=$2$3 [QSA,L]
RewriteRule ^/([^/]+)(.*) /index.php?_controller=$1$2 [QSA,L]
Мне бы хотелось, чтобы URL-адрес был таким:
http://name.local/someFolder/?_controller=aController&_action=anAction
Чтобы преобразовать в:
http://name.local/someFolder/aController/anAction
Я не уверен, почему мои правила перезаписи не работают так, как я хочу, любая помощь будет принята с благодарностью. Спасибо!
Такую перезапись можно выполнить следующим образом:
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)$ index.php?_controller=$1&_action=$2 [QSA,L]
Он перезапишет (внутреннее перенаправление) запрос / первый / второй
в /index.php?_controller = first & _action = second
.
Он будет работать только в том случае, если вы запрашиваете несуществующий ресурс. Итак, если у вас есть такая папка / first / second
, то перезапись не произойдет.
Если вы измените шаблон с ^ ([^ /] +) / ([^ /] + ) $
в ^ ([^ /] +) / ([^ /] *) $
, тогда он также будет применим для этой перезаписи: / first /
в /index.php?_controller=first&_action=
(обратите внимание, что здесь требуется косая черта в конце).
Если вы измените шаблон с ^ ([^ /] +) / ([^ /] +) $
в ^ ([^ /] +) / ([^ /] +) /? $
, / первый / второй
и / первый / второй /
будут рассматриваться как одно и то же (с точки зрения перезаписи). Для этого измените шаблон на ^ ([^ /] +) (/ ([^ /] *))? /? $
.
/ первый / второй
и / первый / второй /
будут рассматриваться как одно и то же (с точки зрения перезаписи). Для этого измените шаблон на ^ ([^ /] +) (/ ([^ /] *))? /? $
.