2013-06-17 4 views
0

У меня есть этот файл .htaccess на моем Dev машине Windows, и все работает отличноФайл не найден с файла .htaccess на сервере Apache

RewriteEngine On 
RewriteRule ^(.+[^/])/$ http://%{HTTP_HOST}/webserv/$1 [R=301,L] 
RewriteRule ^login/([0-9]+)/([0-9]+)$ login.php?par1=$1&par2=$2 [L,NC,QSA] 

Когда я загрузить его на моем сервере Centos я получаю ошибку

404 The requested URL path_to_script/login.php was not found on this server. 

Я не могу понять, почему это так. Файл определенно существует, и я дал разрешения 777.

Я проверил, действительно ли .htaccess используется, добавив в него мусор и получив внутреннюю ошибку (500), что означает, что она работает.

Также, когда я использую .htaccess, чтобы создавать ограничения на IP-адреса, имеющие доступ к каталогу, в котором он работает. mod_rewrite загружается, как показано в phpinfo(), который я пробовал.

Здесь я затрудняюсь.

EDIT

я заметил, что он пытается найти в базовый_путь добавляя его в корневом каталоге, например,

/path_to_script/path_to_script/login.php 

И вот почему он терпит неудачу. Как я могу это решить?

+0

окон чувствительны к регистру. Попробуйте проверить различия в верхних строках на вашем пути. –

+0

Я проверил это. Я скопировал путь в сообщении об ошибке и сделал меньше на машине linux, чтобы убедиться, что он находит его, и это так. – idipous

+0

попробуйте добавить 'RewriteBase/path_to_script' до правила Rewrite –

ответ

0

Я, наконец, решил это, но так, что я не уверен, что мне нравится. По крайней мере, это работает. Если у кого-то есть лучшее решение, я был бы рад увидеть его.

RewriteRule ^login/([0-9]+)/([0-9]+)$ http://host/webserv/login.php?par1=$1&par2=$2 

Причина, по которой мне не нравится это решение, заключается в том, что я не даю довольно URL-адреса. Он просто перенаправляет.

Я до сих пор не понимаю, почему я получаю корневой каталог добавляемый к запросу, если я вместо того, чтобы писать:

RewriteRule ^login/([0-9]+)/([0-9]+)$ login.php?par1=$1&par2=$2 
Смежные вопросы