2014-07-30 4 views
1

В моем приложении я хочу отправить весь запрос в index.php, где я выбираю, какой контроллер и метод использовать, и вызывать этот метод и давать параметр, полученный через get или post. Так в корневой директор я положил файл .htaccess с этим кодом:Отправить данные POST с RewriteRule

<IfModule mod_rewrite.c> 
RewriteEngine on 
RewriteRule ^$ public/ [QSA,L,NC,PT] 
RewriteRule (.*) public/$1 [QSA,L,NC,PT] 

И я отправить запрос на все папки, где у меня есть этот файл .htaccess:

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
# Rewrite all other URLs to index.php/URL 
RewriteRule ^(.*)$ index.php?url=$1 [QSA,PT,L,NC] 
</IfModule> 
<IfModule !mod_rewrite.c> 
ErrorDocument 404 index.php 
</IfModule> 

It работает и отправляет весь запрос index.php, но проблема в том, что если я попытаюсь отправить данные через POST, он не попадет в index.php, если я отправлю его через get it works, но позвольте сказать, что у меня есть страница входа в систему , Я не могу позволить себе отправлять все данные через get, потому что я не хочу, чтобы pas меч, который можно увидеть в url.

Так есть способ отправить данные POST в index.php с файлом .htaccess?

Я знаю, что есть другие вопросы, подобные этому на сайте, но я попробовал один из них и не работал, многие из них ответили, чтобы добавить P в [] в файл .htaccess, но если я это сделаю, получите ошибку, что я сделал плохой запрос.

+0

, что вы имеете в виду, что не сделал попасть в index.php? codeigniter, и на самом деле многие другие фреймворки делают эту точную вещь, и они работают отлично. – Prasanth

+0

Я не использую фреймворк, я пытаюсь реализовать свою собственную фреймворк, и я имею в виду, что если у меня есть форма с методом POST, когда .htaccess переписывает url в index.php, данные теряются. У меня есть форма с: методом = "post" class = "minimum" action = 'user/login' с двумя полями имя пользователя и пароль, пользователь означает, что мне нужен userController, а login - это метод контроллера, и этот метод имеет два имени и пароль параметров. Как я могу это сделать когда .htaccess переписывает url в index.php в index.php, чтобы иметь предыдущий пользователь/логин url, а также значения имени пользователя и пароля из форм? –

+0

можете ли вы отправить 'var_dump ($ _ POST);' привести ваш метод контроллера входа? – Prasanth

ответ

2

Обычно я использую это переписывание для приложений и теперь он работает отлично:

RewriteEngine On 
# Send the URI to index.php 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule^index.php [QSA,L] 

В основном код выше, проходит все, что не является файл или каталог непосредственно index.php и код сидит там есть проанализировать и ответить соответствующим образом.

Событие с пользовательскими фреймворками (как вы упомянули, что вы хотите использовать самостоятельно [Который я бы не советовал вам делать]).

Вы можете использовать спокойные маршруты и проанализировать их на уровне приложений, поэтому, если ваш сайт находится на exmaple.com, URL-адрес будет примерно example.com/controller/action/. Но вам нужна какая-то маршрутизация, чтобы определить шаблон.

В ссылке вы можете посмотреть на Slim Framework, он имеет очень хороший метод определения маршрутов, независимо от того, что ваш шаблон именования для модулей/контроллеров/действий и т.д.

+0

Спасибо, я gona смотрю Slim Framework.Я не всегда использую свои собственные фреймворки, я просто сделал это для практики и вне зависимости от того, как все работает во времени, прежде чем использовать реальную инфраструктуру, я хочу использовать Zend 2, поэтому я попытался реализовать что-то вроде MVC, я узнал из http://anantgarg.com/2009/03/13/write-your-own-php-mvc-framework-part-1/, и у меня есть маршрут и помощники, но он не будет использовать меня, если данные $ _POST не отправляются Кроме того, в фреймворке, о котором вы говорите, когда вы используете rewriterule и отправляете данные в index.php, также отправляете значения $ _POST? –

+0

Ive также сделал это для образовательных целей и потерял чувство, что рамки - это чистая магия. Что касается Slim, это скорее мета-каркас, поэтому все относительно просто. Убедитесь, что все передано в индекс, без перенаправления, и проанализируйте его с помощью приложения (регулярное выражение, простое взорвание или, как вы считаете, оно подходит). Надеюсь, я помог :) –

+0

Я использовал взрыва, и забавные вещи состоят в том, что начальный пользователь/логин url проходит, чтобы индексировать, вероятно, с этим $ 1 в файлах .htaccess, но нет, я дам больше попыток, а также посмотрю на Slim посмотреть, как он это делает. Спасибо! –

Смежные вопросы