Apache URL Rewrite - Скрыть / public_html / In URL Path - PullRequest
0 голосов
/ 05 ноября 2011

Я хотел бы ввести следующий URL в мой браузер:

localhost/mydomain/about.php

И иметь перенаправление apache на фактическое местоположение файла:

localhost/mydomain/public_html/about.php

Я написал следующий файл .htaccess:

RewriteEngine On
RewriteRule ^(.+)$ public_html/$1

Я совершенно незнаком с Apache, и мое понимание выражений reg очень простое - но я подумал, что это будет означать «Выбери любой путь после имени домена и вставь перед ним public_html /». В результате получается ошибка 500 Internal Server.

Чего мне не хватает?

1 Ответ

1 голос
/ 05 ноября 2011

Это связано с тем, что указание только ^(.+)$ правила будет перезаписывать бесконечный цикл.

about.php> public_html / about.php> public_html / public_html / about.php> ...

Быстрое исправление будет RewriteRule ^([^/]*)$ public/$1.или вас может заинтересовать модификатор / флаг LAST для правила перезаписи:

RewriteRule ^public/(.*)$ public/$1 [L]
RewriteRule ^(.*)$ public/$1

На всякий случай, если вы хотите узнать способ отладки модуля rewrite_module, вы можете установить LogLevel DEBUG в httpd.Conf, то вы можете проверить журнал ошибок Apache.

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