Проблема .htaccess на Mac [дубликат]

Возможный дубликат:
Все, что вы когда-либо хотели знать о правилах 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

Я не уверен, почему мои правила перезаписи не работают так, как я хочу, любая помощь будет принята с благодарностью. Спасибо!

0
задан 13 April 2017 в 15:14
1 ответ

Такую перезапись можно выполнить следующим образом:

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= (обратите внимание, что здесь требуется косая черта в конце).


Если вы измените шаблон с ^ ([^ /] +) / ([^ /] +) $ в ^ ([^ /] +) / ([^ /] +) /? $ , / первый / второй и / первый / второй / будут рассматриваться как одно и то же (с точки зрения перезаписи). Для этого измените шаблон на ^ ([^ /] +) (/ ([^ /] *))? /? $ .

/ первый / второй и / первый / второй / будут рассматриваться как одно и то же (с точки зрения перезаписи). Для этого измените шаблон на ^ ([^ /] +) (/ ([^ /] *))? /? $ .

0
ответ дан 5 December 2019 в 16:58

Теги

Похожие вопросы