.htaccess - mod_rewrite работает для некоторых страниц, но не для других - PullRequest
0 голосов
/ 21 октября 2011

Я застрял в странной проблеме.

У меня есть файл по адресу / public_html / academics / courses.php

Я хочу .htaccess для mod_rewrite URL, как показано ниже:

Исходный URL: http://niecdelhi.ac.in/academics/courses/

После mod_rewrite: http://niecdelhi.ac.in/index.php?inc=/academics/courses/

В общем, я хочу, чтобы mod_rewrite все URL-адреса в index.php и передавал URL-адрес в качестве параметра с именем "inc",Затем в index.php я включаю файл, выполняя include ($ _ GET ['inc']);

mod_rewrite работает для некоторых страниц сайта.и я получаю URL в $ inc.Но это не работает вообще для других страниц.

Например, рассмотрим два файла, которые существуют на сервере:

  1. http://niecdelhi.ac.in/academics/courses.php
  2. http://niecdelhi.ac.in/academics/library.php

mod_rewriteпервый работает, файл включается в index.php, а второй получает обычный существующий файл.не включенный в index.php

Надеюсь, вы понимаете проблему, с которой я сталкиваюсь.Пожалуйста, предоставьте мне решение.

.htaccess файл

Options +FollowSymlinks
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_URI} !\..*$ [NC]
RewriteCond %{QUERY_STRING} (.*) [NC]
RewriteRule ^(.*)$ index.php?inc=$1&%1 [L]

Страница работает: http://niecdelhi.ac.in/academics/courses/

Страница не работает: http://niecdelhi.ac.in/academics/library/

* РЕДАКТИРОВАТЬ *

Других .htaccess нигде нет.Хотя я нашел ключ к пониманию того, что происходит.Проблема происходит только на сервере Linux.Код работает правильно на сервере Windows. У меня есть сервер Linux с PHP 5.2.16.

Кроме того, некоторые страницы работают, а некоторые нет.Я обнаружил, что работают только те страницы, которые имеют папку с одинаковым именем в том же каталоге.Например, каталог Academics выглядит следующим образом:

academics/
    |_ courses/
    |    |_ mba.php
    |    |_ mca.php
    |_ courses.php
    |_ library.php

Теперь, так как courses.php имеет папку с одинаковым именем в том же каталоге.Это получает mod_rewrite хорошо.Но библиотека.php не получает mod_rewrite.

Сервер Linux пропускает mod_rewrite для файлов, которые действительно существуют.Почему так ??

1 Ответ

0 голосов
/ 21 октября 2011

Мое единственное предположение, что где-то в вашей структуре есть другой .htaccess (наиболее очевидно, внутри / academics /), который переопределяет правило для "библиотеки".

Может ли быть другое правило mod_rewriting внутри этой папкиэто слово «БИБЛИОТЕКА» и, возможно, испортит ваше переписывание.

Обратите внимание, что это также может быть проблема с собственным Apache.Например, в Ubuntu, по умолчанию в версии 10.10 (я так думаю), если у вас есть папка / javascript /, она будет коротко замкнута в / usr / lib / javascript или что-то в этом роде ...

Проверьте все возможные случаи перезаписи мода в httpd.conf, все динамически загружаемые файлы .conf, ваш файл vhost и, наконец, путь к корневому каталогу вашего документа ...

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