Я не могу заставить rewriterule работать - PullRequest
0 голосов
/ 28 февраля 2012

Я использую VertrigoServ 2.27 на моем ноутбуке (localhost: 8080).

Модуль перезаписи включен, и я протестировал его на примере alice.html и bob.html (/6018965/perepisyvanie-url-na-localhost), и он работает с.htacces внутри www-подпапки. И я также поместил мусорный текст в .htaccess, и я получил ошибку от Apcheserver, поэтому мод перезаписи работает, и я использую правила.

here is the rule: (inside /www/folder1/.htaccess)
Options +FollowSymLinks 
RewriteEngine  On
RewriteRule /(.*) /index.php?disp=$1 [QSA,L]

Поэтому, когда я помещаю этот URL в браузер, мойстраница индекса загружена нормально. http://localhost:8080/folder1/index.php

И проблема здесь: Когда я запрашиваю вход через index.page (страница входа) и отправляю URL на сервер localhost, нажимая кнопку отправки, URL изменяет localhost: 8080 /логин, это должен быть localhost: 8080 / folder1 / login

  • как мне сохранить имя подпапки в URL?

и я хочу конвертировать URL как это: www.best-food-of-the-usa.com/index.php?operation=top&state=arizona& city = mesa & limit = 10

нравится это: www.best-food-of-the-usa.com/arizona/mesa/top10.html

Любая помощь приветствуется. Спасибо \ Jose

1 Ответ

1 голос
/ 28 февраля 2012

RewriteRule ведет себя так, как говорят документы.

С Директива RewriteRule Документы Apache

Что подобрано?

В контексте VirtualHost шаблон будет первоначально сопоставляться с частью URL после имени хоста и порта и перед строкой запроса (например, "/app1/index.html").

В контексте Directory и htaccess шаблон будет сначала сопоставляться с путем к файловой системе после удаления префикса, который приводит сервер к текущему RewriteRule (например, «app1 / index.html» или «index.html» в зависимости от того, где директивы определены).

Если вы хотите сопоставить имя хоста, порт или строку запроса, используйте RewriteCond с переменными% {HTTP_HOST},% {SERVER_PORT} или% {QUERY_STRING} соответственно.

Итак, когда в Directory and htaccess контексте префикс /www/folder1/ будет удален. Также помните, что при сопоставлении с RewriteRule в контексте Directory and htaccess шаблон никогда не начинается с /.

Итак, ваш RewriteRule должен быть:

Options +FollowSymLinks 
RewriteEngine  On
RewriteRule (.*) /index.php?disp=$1 [QSA,L]
...