вопрос относительно конкретного синтаксиса mod_rewrite - PullRequest
1 голос
/ 19 июля 2011

Я знаю, что есть другие вопросы, которые похожи на это ... но я действительно борюсь с синтаксисом mod_rewrite, чтобы я мог использовать некоторую помощь.

По сути, я пытаюсь сделать следующее перенаправление:

domain.com/1/ перенаправление на domain.com/?id=$1 (также должно работать на www.domain.com)

Что у меня есть (что не работает):

RewriteEngine On
ReRewriteRule ^/([0-9])$ /?id=$1

Ответы [ 3 ]

1 голос
/ 19 июля 2011

Несколько вопросов.

Во-первых, это терминология: если вы хотите, чтобы пользователь вводил domain.com/1/, чтобы запрос обслуживался index.php? Id = 1, вы переписываете / 1 / в index.php? Id = 1 не наоборот, как ты сказал.

Вторая простая опечатка: RewriteRule, а не ReRewriteRule.

Во-вторых, [0-9] - это правильный способ сопоставления числа, но он будет соответствовать только одной цифре. Если вы хотите обработать / 13, вам нужно сопоставить один или несколько экземпляров [0-9], написав [0-9]+.

В-третьих, целью вашего правила должен быть файл, который вы хотите обслуживать. / не является файлом или абсолютным URL, запишите index.php, если вы это имеете в виду.

В-третьих, вы говорите, что хотите обработать /1/, но ваше правило гласит, что соответствующий запрос должен заканчиваться числом, а не косой чертой. Если вы хотите принять косую черту, есть она или нет, укажите это в правиле.

RewriteRule ^/?([0-9]+)/?$ index.php?id=$1 [L]

Это работает?

1 голос
/ 19 июля 2011

У вас есть три вопроса:

RewriteRule является ошибкой, как указывает Майкл, вам нужно беспокоиться о конце косой черты, и вам нужно прекратить обработку правил, когда вы нашли совпадение:

RewriteRule ^/(\d+)/?$ /?id=$1 [L]
0 голосов
/ 19 июля 2011

Вы ошиблись RewriteRule. В противном случае, я думаю, что ваш синтаксис выглядит правильно.

RewriteEngine On
ReRewriteRule ^/([A-Za-z0-9]+)$ /?id=$1
--^^^---------

На самом деле, вы, вероятно, должны удалить /:

RewriteEngine On
RewriteRule ^([A-Za-z0-9$_.+!*'(),-]+)$ /?id=$1
      ------^^^---------

РЕДАКТИРОВАТЬ Добавлено +. Посмотрите на все ответы здесь. Вам понадобится их совокупность, включая + и [L] в дополнение к тому, что у меня есть здесь.

РЕДАКТИРОВАТЬ2 Также отредактировано для включения букв в символы.

EDIT3 Добавлены специальные символы в регулярное выражение. Они должны быть действительными в URL-адресе, но найти их там необычно.

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