Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Использование .htaccess для перенаправления с удобного URL-адреса на фактический файл

Автор вопроса: Orr SiloniОтветов: 1

У меня есть следующий RewriteRule в моем .htaccess для перенаправления с дружественного URL-адреса на мой основной файл приложения:

RewriteRule ^\/(.*).html$ home/www/page.php?p=$1 [L]

Это должно отправить любой URL-адрес, указывающий на html-страницу, на page.php с URL-адресом в качестве параметра, который будет проанализирован приложением. Это работает для URL вида http://www.example.com/hello.html.

Проблема в том, что я получаю ошибку 404, когда URL-адрес содержит путь к каталогу, например: http://www.example.com/category/hello.html

Ошибка гласит: "Файл не существует: /home/www/category".

Кажется, он сначала ищет путь "категории" вместо обработки .htaccess. Есть идеи, как это решить?

url-rewritingapachemod-rewrite

Ответы

Ответ 1 · рейтинг 1 · Travis Brown

Вы пытались удалить начальный \/ из правила перезаписи?

Я только что попробовал следующий файл .htaccess:

RewriteEngine On
RewriteRule ^(.*)\.html$ page.php?p=$1 [L]

С этим в качестве моего page.php:

<?php print_r($_GET); ?>

И когда я перехожу к /category/hello.html, я получаю следующее:

Array ( [p] => category/hello )

Как и ожидалось.

Также обратите внимание, что вам нужно экранировать . перед html, поскольку вы, вероятно, не хотите, чтобы /category/hellozhtml работало.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы