Как мне заставить работать мою контактную форму после mod_rewrite? - PullRequest
0 голосов
/ 22 января 2011

Я создал сайт, используя CMS Made Simple.Я должен указать URL хоста для всего, кроме страницы администратора и контактных форм.Мне удалось сделать это с mod_rewrite в config.php и изменить .htaccess, но теперь мои контактные формы больше не работают (одна в нижнем колонтитуле и одна на странице контактов).Вот как выглядит мой файл .htaccess:

  Options +FollowSymLinks
  RewriteEngine on
  RewriteBase /

  RewriteCond %{HTTP_HOST} ^energyfa.ipower.com$ [NC]
  RewriteCond %{REQUEST_URI} !^/ai/admin/
  RewriteRule ^(.*)$ http://accimpress.com/$1 [R=301,L] 

  # 301 Redirect all requests that don't contain a dot or trailing slash to
  # include a trailing slash
  # except for form POSTS
  RewriteCond %{REQUEST_URI} !/$
  RewriteCond %{REQUEST_URI} !\.
  RewriteCond %{REQUEST_METHOD} !^POST$
  RewriteRule ^(.*) %{REQUEST_URI}/ [R=301,L]

  # Rewrites urls in the form of /parent/child/
  # but only rewrites if the requested URL is not a file or directory
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.+)$ index.php?page=$1 [QSA]

Существует ли причина, по которой моё исключение POST может не работать?Любые предложения будут очень благодарны.Сайт: http://energyfa.ipower.com/ai/

Спасибо, Кори

Ответы [ 3 ]

1 голос
/ 23 марта 2012

попробуйте изменить ваш .htaccess с

# .htaccess for CMS made simple
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !/$
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_METHOD} !POST$
RewriteRule ^(.*) %{REQUEST_URI}/ [NE,R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f [NC]
RewriteCond %{REQUEST_FILENAME} !-d [NC]
RewriteRule ^(.+)$ index.php?page=$1 [QSA]
# EOF

на

# .htaccess for CMS made simple
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !$   <--- to put the "/"  ---->
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_METHOD} !POST$
RewriteRule ^(.*) %{REQUEST_URI} [NE,R=301,L]   <--- to put the "/" after } ---->
RewriteCond %{REQUEST_FILENAME} !-f [NC]
RewriteCond %{REQUEST_FILENAME} !-d [NC]
RewriteRule ^(.+)$ index.php?page=$1 [QSA]
# EOF

это работает для нас

0 голосов
/ 28 января 2011

Похоже, что CMS Made Simple не поддерживает их модуль Form Builder после того, как вы перенаправили свой URL-адрес с симпатичными URL-адресами, поэтому мое решение на данный момент было использовать Отправить этот файл, например так:

http://accimpress.com/upload/

Но спасибо за ваши предложения Андрей!

0 голосов
/ 22 января 2011

Я вижу, что действие в вашей форме установлено на http://energyfa.ipower.com/ai/contact-us/. Я верю, что POST перейдет по этому URL. Вы нажмете свой первый RewriteRule и снова будете перенаправлены на контактную форму, но, поскольку это перенаправление браузера, это, вероятно, будет просто GET, поэтому ваш контент POST никогда не попадет в ваш скрипт.

Попробуйте изменить действие формы на http://accimpress.com/contact-us/ и посмотрите, что произойдет.

...