Htaccess, mod_rewrite и регулярное выражение только для буквенно-цифровых символов и тире - PullRequest
2 голосов
/ 13 октября 2009

Просто не могу понять эти регулярные выражения.

У меня есть файл .htaccess с некоторыми изменениями URL. Посмотрите ниже, что у меня сейчас:

RewriteRule ^news news/ [R]
RewriteRule ^news/([-A-z0-9]+)/$ news/$1 [R]
RewriteRule ^news/([-A-z0-9]+)$ index.php?news=$1 [L]

Я не думаю, что это правильно, я имею в виду, что я мог бы быть лучше.

Это то, что они должны делать.

  • Если посетитель посещает www.mydomain.com/news или www.mydomain.com/news/ он должен быть перенаправлен на www.mydomain.com/index.php
  • Если посетитель посещает www.mydomain.com/news/test-slug или www.mydomain.com/news/test-slug/ он следует перенаправить на www.mydomain.com/index.php?news=test-slug
  • Слизни содержат только буквы (A-Z и а-я), цифры (0-9) и тире «-», поэтому мне нужно правильное регулярное выражение для это

Может кто-нибудь помочь мне построить правильные переписывания?

Ответы [ 2 ]

2 голосов
/ 13 октября 2009

Вы можете суммировать ваши первые два правила с этим правилом:

 RewriteRule (.+)/$ /$1 [L,R=301]

Это удалит косую черту из запросов. И ваше третье правило выглядит хорошо. Ожидайте, что диапазон A - z будет содержать не только диапазоны A - Z (0x41-0x5A) и a - z (0x61-0x7A), но также символ между этими двумя диапазонами [, \, ], ^, = и `` . I would use [- A-Za-z0-9] `взамен.

0 голосов
/ 22 мая 2010

это может сработать

RewriteRule ^/news(/)(.+)$ /index.php?news=$2 [L]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...