Правило перезаписи в .htaccess не работает по запросу

0

У меня проблема с REWRITE RULES на.htaccess. Я пытаюсь переписать динамический URL-адрес в статических.

Веб-сайт представляет собой многоязычный веб-сайт. Я уже создал статические URL-адреса для выбранных языков, как показано ниже

www.example.net/index.php?lang= de
www.example.net/de/
...and so on....

Теперь мне нужно переписать URL-запрос следующим образом:

www.example.net/de/player.php?Name=Gianfranco&Surname=Zola&id=468

в

www.example.net/de/spieler-Gianfranco-Zola-468.html

Правило, которое я использовал:

RewriteEngine On
RewriteRule ^de/spieler-([^-]*)-([^-]*)-([^-]*)\.html$ /player.php?Name=$1&Surname=$2&id=$3 [L]

Если я нажму ссылку, чтобы перейти на страницу, связанную с Zola на немецком языке, ссылка dos не перенаправляет меня на запрашиваемую страницу профиля, а на той же странице, на которой я нажал ссылку.

Ссылка, отображаемая в браузере, является правой
www.example.net/de/spieler-Gianfranco-Zola-468.html

но, как было сказано выше, я не могу просмотреть детали, содержащиеся на странице player.php.

  • 0
    Вы делаете это ужасно неправильно. Для управления красивыми URL вам нужна система маршрутизации, которую вы можете найти в любой современной PHP-фреймворке. Например, в Laravel вы можете решить свою проблему за 10 секунд: laravel.com/docs/4.2/routing#basic-routing
  • 0
    ([^-]) только для одной буквы. Используйте ([^-]*) или ([^-]+) вместо этого. + для 1 и более и * для 0 и более.
Теги:
.htaccess

2 ответа

0

Это должно быть так,

RewriteEngine On
RewriteRule de/spieler-([^-]*)-([^-]*)-([^-]*)\.html$ player.php?Name=$1&Surname=$2&id=$3 [L,NC]

Исправление: ^ была проблема, и я удалил '/' слэш перед player.php

0

Попробуйте это правило

 RewriteRule ^de/spieler-([^-]*)-([^-]*)-([^\.]*)\.html$ /player.php?Name=$1&Surname=$2&id=$3 [L]

Или

RewriteRule ^de/spieler-([^-]*)-([^-]*)-([0-9]*)\.html$ /player.php?Name=$1&Surname=$2&id=$3 [L]
  • 0
    Привет Ньюман, спасибо за ваши ответы. Теперь я действительно запутался. У меня нет опыта работы с apache и правилом переписывания. Где я должен поставить эти правила? Должен ли я поместить их в основной .htacccess или в .htaccess в папке www.example.de/de?
  • 0
    @ user4265789, вы должны поставить его на основной .htaccess. Просто замените правило из вашего вопроса.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню