mod_rewrite и относительные URL - PullRequest
3 голосов
/ 08 марта 2010

Я устанавливаю несколько простых правил перезаписи URL, используя mod_rewrite и файл .htacces, но у меня есть некоторые проблемы. Если я настрою .htacces таким образом:

Options +FollowSymLinks

RewriteEngine On
RewriteBase /

RewriteRule /index.html /index.php [L]

когда я вызываю из браузера этот URL: http://localhost/~dave/mySite/index.html Я получил ошибку 404.

Использование этого .htacces вместо

Options +FollowSymLinks

RewriteEngine On
RewriteBase /

RewriteRule /index.html http://localhost/~dave/mySite/index.php [L]

все работает отлично, и я получаю ожидаемую страницу index.php. Я вынужден использовать абсолютные URL в качестве цели перезаписи? Это проблема конфигурации Apache?

Я использую Max OS X 10.6.2 со стандартной установкой Apache.

Ответы [ 2 ]

4 голосов
/ 08 марта 2010
  1. Базовая директива RewriteBase устанавливает базовый путь; вам не нужно указывать абсолютные пути в правилах перенаправления.

  2. Шаблон правил не является простым текстом; это регулярное выражение.

  3. Если вы задали полный URL-адрес в качестве цели, вы дадите браузеру указание перенаправить в другое место; этот вид перенаправления не прозрачен для пользователя.

Чтобы подвести итог, попробуйте вместо этого:

RewriteRule ^index\.html$ index.php [L]
0 голосов
/ 08 марта 2010

Попробуйте сделать

RewriteRule ^(.*)/index.html $1/index.php [L]

Это должно отсортировать.

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