Мод Rewrite не работает с использованием .htaccess на общем сервере Linux - PullRequest
0 голосов
/ 25 января 2012

Я использую общий Linux-хостинг и создал поддомен, который указывает на папку / hrms внутри корневой папки.

Теперь у меня есть условие перезаписи мода только для этого поддомена, которое выглядит так:

RewriteEngine On
RewriteBase /hrms/
RewriteCond %{REQUEST_URI} !^/static/images
RewriteCond %{REQUEST_URI} !^/static/js
RewriteCond %{REQUEST_URI} !^/static/css
RewriteRule ^/(.*)$ /index.php?request=$1 [PT,QSA,L]

Но я получаю эту ошибку при попытке войти:

http://hrms.atulmy.com/login

Не найдено Запрошенный URL / логин не найденна этом сервере.Кроме того, при попытке использовать ErrorDocument для обработки запроса возникла ошибка 404 Not Found.

Кроме того, я попытался проверить, анализируется ли .htaccess, и при добавлении нежелательной почты сервер выдавал500 Внутренняя ошибка, поэтому .htaccess также анализируется и не является проблемой.

Я уже искал ту же ошибку в google и stackoverflow, но не нашел ошибку, которую я делаю.

Пожалуйста помоги!Спасибо ...

Атул Ядав. atulmy.com

Ответы [ 3 ]

1 голос
/ 26 января 2012

Я предполагаю, что ваш провайдер службы общего хостинга (SHS) предоставляет некоторую консоль сопоставления поддоменов, поэтому сопоставление http://hrms.atulmy.com/ в ~/hrms выполняется через и специфично для SHS RewriteMap в его конфигурации vhost.

  1. Проверьте свои предположения, временно переименовав .htaccess;сбросьте скрипт phpinfo в ~/hrms и выполните http://hrms.atulmy.com/phpinfo.php
  2. , поскольку http://hrms.atulmy.com/login имеет REQUEST_URI /login ваш RewriteBase должен быть просто /, и вы должны использовать ~/hrms/.htaccess
  3. Вы никогда не совпадете с ^/ в правиле перезаписи .htaccess.
  4. Вы должны использовать относительную строку подстановки в правиле перезаписи .htaccess, если только вы не хотите переписать в другую иерархию каталогов.
  5. Возможно, вы захотите сделать правильное перенаправление для http://atulmy.com/hrms/
  6. Вы не хотите зацикливаться на index.php, поэтому вам нужно условие защиты, самый простой способ - использовать существование файлапроверка, которая устраняет необходимость в существующих статических проверках.

Предоставление:

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} =atulmy.com
RewriteRule hrms/(.*) http://hrms.atulmy.com/$1     [R=301,L]

RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule (.*)               index.php?request=$1 [PT,QSA]

Если вам это не нравится, замените это последнее условие на:

RewriteCond %{REQUEST_URI} !^/static/(images|js|css)  [OR]
RewriteCond %{REQUEST_URI} !^/index\.php
0 голосов
/ 26 января 2012

Можете ли вы опубликовать больше вашего файла Htaccess? Если я попытаюсь:

http://hrms.atulmy.com/index.php?request=login

Он отправляет мне:

http://hrms.atulmy.com/login
0 голосов
/ 25 января 2012

Как насчет этого:

RewriteEngine On
RewriteBase /hrms/
RewriteCond %{REQUEST_URI} !^/static/(images|js|css)
RewriteRule (.*) /index.php?request=$1 [PT,QSA]

?Скажите, если это работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...