Arhn - архитектура программирования

Генератор mod_rewrite не перезаписывает URL-адреса

У меня есть этот URL: http://localhost/design/oferta.php?tip=Restaurant&nume=Test&localitate=Calnic%20&judet=Alba&id=5206337cd1cef, и я хочу, чтобы он выглядел так: http://localhost/design/oferta/Restaurant-Test-Calnic%20-Alba-5206337cd1cef.php. Я попытался использовать следующий код внутри .htaccess:

RewriteEngine On
RewriteRule ^design/oferta/([^-]*)-([^-]*)-([^-]*)-([^-]*)-([^-]*)\.php$ /design/oferta.php?tip=$1&nume=$2&localitate=$3&judet=$4&id=$5 [L,R]

Он не переписывает мой URL. Я получил этот код, сгенерированный генератором, который я нашел по адресу http://www.generateit.net/mod-rewrite/. Есть ли что-то, чего мне не хватает? Кроме того... будет ли это работать для всех моих URL-адресов или только для того, который я указал? Я хочу, чтобы он работал для всех динамических URL-адресов "offerta?...". Когда я пытаюсь получить доступ ко второму URL-адресу (тому, который мне нужен), он показывает мне страницу с ошибкой 404. .htaccess создается как надо. Я знаю, что этот вопрос не очень общий, но я думаю, что я не единственный, кто использовал этот маленький генератор. Пожалуйста, дайте мне знать, чтобы я мог отредактировать свой вопрос, прежде чем понизить рейтинг. Спасибо!

Я только что отредактировал свой первоначальный вопрос, чтобы отразить некоторые изменения, внесенные с тех пор, как я спросил. Пожалуйста, не торопитесь и прочитайте вопрос еще раз. Короче говоря: я восстановил код URL-адреса, который мне нужен, но с другим желаемым URL-адресом. Теперь он генерирует страницу 404.

29.08.2013

  • Какой URL-адрес вы вводите в браузере, чтобы проверить это правило? 29.08.2013
  • Когда я ввел: http://localhost/Restaurant-Test-Calnic%20-Alba-5206337cd1cef.php, он перенаправил на http://localhost/design/oferta.php?tip=Restaurant&nume=Test&localitate=Calnic%20&judet=Alba&id=5206337cd1cef внутренне. Если вы хотите, чтобы URL-адрес изменился в браузере, добавьте флаг R как [L,R]. 29.08.2013
  • Я только что отредактировал свой вопрос. После этого я добавил флаг R, и теперь он генерирует страницу с ошибкой 500 вместо 404. 29.08.2013
  • Скажите, что за ошибка в файле журнала ошибок Apache. 29.08.2013
  • У меня нет опыта работы с серверами, но это последняя строка в моем журнале ошибок. [Сб, 31 августа, 06:45:18.048244 2013] [core:alert] [pid 3940:tid 1464] [client ::1:50285] C:/xampp/htdocs/Design/.htaccess: RewriteRule: я думаю, неверные разделители флагов это то, что ты хотел увидеть? 29.08.2013
  • Решил ошибку 500. У меня был пробел между L и R. Теперь я вернулся на страницу с ошибкой 404. 29.08.2013
  • Хороший знак. Теперь скажите мне, какой URL вы видите в своем браузере, когда в правиле у вас был флаг R. 29.08.2013
  • localhost/design/oferta/Restaurant-Test-Calnic%20-Alba-5206337cd1cef.php 29.08.2013
  • Это ваш исходный URI. После перенаправления вы должны получить что-то вроде: /design/oferta.php?tip= Restaurant... 29.08.2013
  • Нет, я ничего не получаю. URL-адрес остается прежним, единственное, что меняется, это то, что я не вижу http://, но если я скопирую и вставлю URL-адрес, он все еще там, поэтому я предполагаю, что Google Chrome просто скрывает его. 29.08.2013
  • Я протестировал его, и, кажется, он отлично работает, перенаправляя на http://localhost/design/oferta.php?tip=Restaurant&nume=Test&localitate=Calnic%20&judet=Alba&id=5206337cd1cef. Убедитесь, что у вас есть .htaccess и mod_rewrite включен и работает. 29.08.2013
  • Я проверил с помощью phpinfo(), включен он или нет, и он включен. Что касается .htaccess, я вам точно скажу, что я сделал. Я создал файл без расширения и назвал его .htaccess. Я также сделал копию этого файла в папке include моего проекта. Может ли это быть проблема? 29.08.2013
  • Я загрузил .htaccess на сервер, который использую для демонстрации. Вы можете проверить страницу здесь: showcase.zz .mu/ 29.08.2013
  • Что-то не так: http://www.showcase.zz.mu/design/oferta/Restaurant-Test-Calnic%20-Alba-5206337cd1cef.php становится: http://www.showcase.zz.mu/? 29.08.2013
  • Могу ли я отправить вам личное сообщение с данными аутентификации для хоста? 29.08.2013
  • Письмо отправлено. Вы можете переключить язык хостинга на английский или любой другой, который вам больше подходит. 29.08.2013
  • Хорошо, я приду на него после того, как закончу кое-какую работу. 29.08.2013

Ответы:


1

Замените свой код на этот:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteRule ^oferta/([^-]*)-([^-]*)-([^-]*)-([^-]*)-([^-]*)\.php$ /oferta.php?tip=$1&nume=$2&localitate=$3&judet=$4&id=$5 [L,R,QSA,NC]
30.08.2013
  • Спасибо Анубхава! Это сработало как шарм. Если у вас есть время, взгляните и на этот вопрос: stackoverflow.com/questions/18540346/ . Они вроде как связаны, но я подумал, что другим будет лучше их разделить. 30.08.2013
  • Пожалуйста. Я прочитаю этот вопрос и постараюсь ответить там. 30.08.2013
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..