Получение переменной из URL, неспособность отобразить полную строку - PullRequest
0 голосов
/ 11 октября 2011

У меня есть динамический URL, который выглядит следующим образом:

news/categories/s/23-brook-launch-new-zealand

, "23" - это идентификатор статьи, а "brook-launch-new-zealand" - название статьи.

Когда я делаю:

echo $_GET['title'];

это только возвращает эхо: "ручейка" не полная строка.

Я использую mod_rewrite для моих URL, код выглядит следующим образом:

RewriteRule ^news/categories/([a-zA-Z]+)/([0-9]+)-([a-zA-Z]+) /news/view-article.php?category=$1&id=$2&title=$3 [NC]

Как мне повторить всю строку?

Ответы [ 4 ]

4 голосов
/ 11 октября 2011

Вы не соответствуете возможному - s:

... ([0-9]+)-([a-zA-Z\-]+) /news/...
                     ^^ You need to add these

Таким образом, полная строка будет:

RewriteRule ^news/categories/([a-zA-Z]+)/([0-9]+)-([a-zA-Z\-]+) /news/view-article.php?category=$1&id=$2&title=$3 [NC]
3 голосов
/ 11 октября 2011

Ваше правило перезаписи не поддерживает тире, попробуйте следующее:

RewriteRule ^news/categories/([a-zA-Z]+)/([0-9]+)-([^/]*) /news/view-article.php?category=$1&id=$2&title=$3 [NC]
1 голос
/ 11 октября 2011

Регулярное выражение, которое вы используете для соответствия заголовку ([a-zA-Z]+), соответствует только ряду символов (a-z) и не содержит тире (-). Возможно, эта часть регулярного выражения должна быть: (([a-zA-Z]+-?)+)

Тогда ваше правило переписывания будет:

RewriteRule ^news/categories/([a-zA-Z]+)/([0-9]+)-(([a-zA-Z]+-?)+) /news/view-article.php?category=$1&id=$2&title=$4 [NC]
0 голосов
/ 11 октября 2011

Я думаю, что вы, вероятно, хотите:

RewriteRule ^news/categories/([a-zA-Z]+)/([0-9]+)-([a-zA-Z0-9-]+) /news/view-article.php?category=$1&id=$2&title=$3 [NC]

В вашей версии в заголовке допускаются только буквы (a-zA-Z), поэтому регулярное выражение не соответствует тире. Вышеуказанное должно совпадать с тире, а также позволит использовать цифры в заголовке (что, я подозреваю, вы захотите разрешить).

Вы можете даже просто захотеть сделать:

RewriteRule ^news/categories/([a-zA-Z]+)/([0-9]+)-(.+) /news/view-article.php?category=$1&id=$2&title=$3 [NC]

... и разрешить любой символ в заголовке - с этим легко обойтись, поскольку заголовок является последней частью URL.

...