mod_rewrite написание локальных маршрутов - PullRequest
0 голосов
/ 08 марта 2012

Видите ли, я хочу перенаправить [R] с http://www.domain.com/dir1/ на http://www.domain.com/.

Я также хочу принять http://www.domain.com/dir1/([0-9]+) и [L] эти запросы на dir1.php? Query= $ 1.И до [L] всех http://www.domain.com/dir1/(.+) до корня.

Так вот мои правила:

RewriteRule dir1/([0-9]+) dir1.php?query=$1 [L]
RewriteRule dir1/(.+) $1 [L]
RewriteRule dir1/ . [R,L]

Проблема с последним (и я пробовал много вариантовэто) является то, что перенаправляет на http://www.domain.com/home/domain/www/. Я имею в виду, что вставляет локальный каталог.Я просто хочу, чтобы он перенаправил на http://www.domain.com/

Спасибо,

1 Ответ

1 голос
/ 08 марта 2012

Используйте путь с косой чертой, чтобы перенаправить клиента на какой-либо абсолютный путь.

RewriteRule dir1/ /  [R,L]

Ошибка в использовании . вместо /.

Это прямо из примеров RewriteRule:

Inside per-directory configuration for /somepath
(/physical/path/to/somepath/.htacccess, with RewriteBase /somepath)
for request ``GET /somepath/localpath/pathinfo'':

Given Rule                                      Resulting Substitution
----------------------------------------------  ----------------------------------

[... snip ...]

^localpath(.*) /otherpath$1                     /otherpath/pathinfo

В нашем случае /otherpath это просто /, и мы не используем $1, поскольку нам не нужна локальная часть.

Вы также можете перенаправить, используя абсолютные URL-адреса. Это полезно для перенаправления http-запросов на https или для перехода на другие сайты. Вы можете перенаправить на тот же сервер, как это:

RewriteRule dir1/ http://%{HTTP_HOST}/  [R,L]

Но это неоправданно сложно.

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