Ответы пользователя по тегу Обработка URL
  • Как отправлять заголовок и url страницы в форме обратной связи?

    orlov0562
    @orlov0562 Куратор тега PHP
    I'm cool!
    можно добавить в форму любые скрытые поля используя html тег input с типом hidden
    <input type="hidden" name="url" value="тут-url-страницы">
    <input type="hidden" name="form-title" value="тут-название-формы">

    сами поля можно либо заранее заполнить через php, либо отлавливать event у формы "on submit" через js и заполнять их перед отправкой формы
    Ответ написан
    Комментировать
  • Как задать параметр в URL?

    orlov0562
    @orlov0562
    I'm cool!
    гугли window.location.hash

    с его помощью можешь прочитать параметр btn из url вида
    site.com/url#btn

    дальше останется только в момент загрузки страницы проверять, есть такой параметр или нет и делать нужные действия, примерно так
    window.addEventListener('load', function() {
        if (location.hash=='#btn') {
             console.log('Press btn');
        }
    })


    а динамически формировать ссылку можно так
    let url = document.location.href + '#btn';
    Ответ написан
    Комментировать
  • Wordpress ЧПУ из GET параметров?

    orlov0562
    @orlov0562
    I'm cool!
    Формат тут такой
    add_rewrite_rule( '<регулярка>', '<редирект>', 'top' );


    в регулярке у тебя должно быть
    /catalog/platforms/android/oreo/100/1000/russia/all/all


    выглядеть это будет так
    catalog/platforms/([^/]+)/([^/]+)/(\d+)/(\d+)/([^/]+)/([^/]+)/([^/]+)

    соответственно получишь такие карманы
    $matches[0] = /catalog/platforms/android/oreo/100/1000/russia/all/all
    $matches[1] = android ; регулярка ([^/]+)
    $matches[2] = oreo ; регулярка ([^/]+)
    $matches[3] = 100 ; регулярка (\d+)
    $matches[4] = 1000 ; регулярка (\d+)
    $matches[5] = russia ; регулярка ([^/]+)
    $matches[6] = all ; регулярка ([^/]+)
    $matches[7] = all ; регулярка ([^/]+)


    теперь используешь эти карманы в замене
    index.php?pagename=catalog&p_from=$matches[3]&p_to=$matches[4]&country=$matches[5]&style=$matches[6]&type=$matches[7]

    в итоге url должен после редиректа получится такой
    index.php?pagename=catalog&p_from=100&p_to=1000&country=russia&style=all&type=all

    * обрати внимание что android и oreo в url не попали, тебе их при необходимости надо добавить согласно твоих параметров

    Итоговое выражение для редиректа
    add_rewrite_rule(
     'catalog/platforms/([^/]+)/([^/]+)/(\d+)/(\d+)/([^/]+)/([^/]+)/([^/]+)', 
     'index.php?pagename=catalog&p_from=$matches[3]&p_to=$matches[4]&country=$matches[5]&style=$matches[6]&type=$matches[7]', 
     'top' 
    );

    После того, как сохранишь, надо сходить в админку, в раздел "Настройки - Постоянные ссылки" и нажать кнопку [Сохранить изменения]

    Затем надо открыть .htaccess и убедиться что создалось корректное правило.
    Ответ написан
    1 комментарий
  • Wordpress не работают перенаправления на страницу профиля, если ник состоит не из цифр, как решить?

    orlov0562
    @orlov0562
    I'm cool!
    function do_rewrite(){ 
        add_rewrite_rule( '^profile/([^/]+)/?', '?nick=$matches[1]', 'top' );
     }

    При запросе /profile/abc сделает редирект на /?nick=abc

    Ну и не забывай, что надо do_rewrite в add_action
    add_action('init', 'do_rewrite', 10, 0);

    И потом пересохранить пути в админке, чтоб переписался .htaccess
    Select Settings -> Permalinks and just click Save Changes without any changes
    Ответ написан
    3 комментария
  • Как сделать правильно 301 редирект?

    orlov0562
    @orlov0562
    I'm cool!
    1) тебе надо, убрать пробел после первой кавычки в регулярке " /parts/part\.php\?id=([^&]+)"
    2) у тебя только один "карман" т.е. в %2 будет пусто
    3) у тебя в id=([^&]+) захватится протокол передачи, будет что-то типа "123 HTTP/1.1", т.е. надо добавить внутрь пробел

    я рекомендую тебе сделать вот так
    RewriteCond %{THE_REQUEST} "/parts/part\.php\?id=([^& ]+)"
    RewriteRule . test.php?test=%1


    а в test.php
    <?php
    
    print_r($_REQUEST);


    отладить параметры которые ты получаешь регуляркой, а затем уже делать редирект

    P.S. посмотреть что там вообще передается в %{THE_REQUEST} и в каком формате, можно вот так:
    RewriteCond %{THE_REQUEST} "^(.+)$"
    RewriteRule . test.php?test=%1
    Ответ написан
    Комментировать
  • Как сделать правильно редирект на главную страницу?

    orlov0562
    @orlov0562
    I'm cool!
    в index.php первой строчкой
    if (isset($_GET['route']) && $_GET['route']=='common/home') {header('Location:/'); exit;}


    или погуглить как делаются нормальные редиректы в твоем фреймворке
    Ответ написан