Jump to content
  • 0

ЧПУ и регулярные выражения


alex_anderr
 Share

Question

Здрасте.

Работаю над ЧПУ. ...и не работают.

Вкратце:

есть динамические ссылки с парой переменных.

http://somesite.ru/goods/index.php?good=150&rule=see

Хочется сделать из них

http://somesite.ru/good/150.html

Вроде простое правило, но без результата пока.

RewriteRule ^/good/([0-9]+).html$ /goods/index.php?good=$1&rule=$2 [L]

--

Ну и чтобы не плодить темы несколько вопросов:

1. У меня есть переменная rule в ссылке. Будет ли она преобразована обратно в динамику если в регулярке она не указана (как в примере)?

2. Если поисковики уже проиндексировали сайт, а я меняю адреса почти всех ссылок на сайте. Это очень плохо или исправляется sitemap'ом?

3. Правильно ли я понимаю весь смысл модреврайта? Ссылки он преобразовывает из ЧПУ в привычные динамические и никак наоборот? Т.е. если я все переделываю под ЧПУ, то и адреса внутренних ссылок требуется менять уже под шаблон моих ЧПУ?

Всегда безмерно благодарен :)

Link to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 0

Здрасте.

Работаю над ЧПУ. ...и не работают.

Вкратце:

есть динамические ссылки с парой переменных.

http://somesite.ru/goods/index.php?good=150&rule=see

Хочется сделать из них

http://somesite.ru/good/150.html

Вроде простое правило, но без результата пока.

RewriteRule ^/good/([0-9]+).html$ /goods/index.php?good=$1&rule=$2 [L]

...


RewriteRule ^good/([0-9]+).html$ /goods/index.php?good=$1&rule=see [L]

1) В RewriteRule попадает адрес без начального слеша

2) Параметр rule подставляйте руками в правиле ибо в исходном адресе он ниоткуда не берется и переменной $2 не существует.

Edited by wwt
Link to comment
Share on other sites

  • 0

В .htaccess достаточно прописать:


RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]

а разбор uri делать через PHP. А то скоро ваш .htaccess превратиться в здоровую портянку.

А лучше возьмите фреймворк и не изобретайте велосипедов.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Similar Content

    • By Лелик
      Нужно заменить в Опенкарт3 index.php?route=product/search&tag= на search?tag= Включив ЧПУ так и получается. Но можно ли это сделать, не включая ЧПУ?  
    • By d0ublezer0
      Привет!
      Хочу зафигачить ЧПУ для страниц, генерируемых фильтром.
      Ленивый разработчик (breakdesigns, привет!) ноет, что это мол ему лично это не нужно, писать роутер и вообще никому из его клиентов это не интересно. Хочу свой, с параметрами и разделами.
       
      Допустим, страница
      https://www.road.media/filter/avtomagnitoly/?custom_f_24[0]=424d57&custom_f_25[0]=5831
      где custom_f_24[0]=424d57 это марка авто BMW
      а custom_f_25[0]=5831 это модель авто X1
       
      custom_f_xxx - это фиксированные коды характеристик, участвующих в фильтрации
      424d57, 5831 и другие - это сами значения.
       
      Характеристики я смогу достать в список для формирования htaccess
      Сами значения элементов фильтра тоже подчиняются алгоритму, я могу их обратно расшифровать и сформировать список.
      Т.е. матрицу сопоставления что чему равно - я смогу собрать.
       
      Вопрос - как это сделать в .htaccess, чтобы CMS продолжила работать штатно, а посетитель и поисковик видели нормальный ЧПУ?
      Указанную выше ссылку я представляю как:
      https://www.road.media/filter/avtomagnitoly/bmw/x1
       
      Притом, могут быть более сложные варианты
      https://www.road.media/filter/avtomagnitoly/?custom_f_24[0]=424d57&custom_f_25[0]=5831&custom_f_25[1]=5835
      тут отмечены BMW, X1 и X5
      в таком случае думаю URL должен быть каким-то таким
      https://www.road.media/filter/avtomagnitoly/bmw/x1_x5
       
      Марка тоже может быть не единичной.
      Вообще набор значений может быть разным:
      https://www.road.media/filter/avtomagnitoly/?custom_f_24[0]=4d657263656465732d42656e7a&custom_f_24[1]=4c616e6420526f766572
      тут например
      4d657263656465732d42656e7a = Mercedes-Benz
      4c616e6420526f766572 = Land Rover
       
      Соответственно, ожидается ссылка вида
      https://www.road.media/filter/avtomagnitoly/land_rover_mercedes_benz
       
      Это возможно вообще?
    • By ataman
      Всем привет !!
       
      Очередная проблема. В общем регулярки....
       
      Есть у меня такое регулярное выражение для проверки e-mail
      ([\w-\.]+)@\D((?:[\w]+\.)+)([a-zA-Z]{2,4})  Но она пропускает адреса такого типа: 
      qwerty..qwerty@gmail.comqwerty.@gmail.com.qwerty@gmail.comКак дописать регулярное выражение, что б отфильтровать эти точки ?
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy