#mod-rewrite
#перезапись мода
Вопрос:
Когда я в .htaccess устанавливаю
RewriteEngine On
RewriteRule mynews/([0-9a-zA-Z] )/([0-9a-zA-Z] )/([0-9a-zA-Z] )/([_0-9a-zA-Z] )/$ http://mysite/mynews.php?a=$1amp;b=$3amp;c=$2
конечный URL-адрес http://mysite/mynews.php?a=1amp;b=5amp;c=291 становится видимым в строке браузера. Есть ли способ предотвратить это, заставить mod_rewrite показывать «красивый» каталог, напримерhttp://mysite/mynews/1/2/3 / ?
Ответ №1:
Удалите это:
http://mysite/mynews..
^^^^^^^^^^^^^^
Итак…
RewriteEngine On
RewriteRule mynews/([0-9a-zA-Z] )/([0-9a-zA-Z] )/([0-9a-zA-Z] )/([_0-9a-zA-Z] )/$ mynews.php?a=$1amp;b=$3amp;c=$2
Конечно, вы можете указать абсолютный ПУТЬ к файлу (вместо URL-адреса), например:
/var/www/blog/mynews.php?a=$1amp;b=$3amp;c=$2
Комментарии:
1. Питер, спасибо за ответ. Я избегаю использования ОТНОСИТЕЛЬНОГО URL-пути, потому что в этом случае все скрипты, включенные в mynews.php с PHP функции include() и require() были пропущены, потому что страница php «думает», что она размещена в нескольких папках, которые на самом деле являются «виртуальными» из-за использования mod_rewrite.
2. У меня также была проблема с путями к изображениям и ссылкам в HTML, которая решается с помощью тега <base href=»…»> . Но, очевидно, это не работает для функций PHP.
3. Нет, то, что вы сказали, неверно. Если конфигурация вашего сервера верна, не имеет значения, будете ли вы использовать относительный или абсолютный путь в htaccess для PHP-скрипта.
4. Хорошо. Я обнаружил, что эта проблема может быть решена, если вместо include(‘myscript.php ‘) вы будете использовать include(‘../myscript.php ‘) или включить(‘./../myscript.php ‘) и т.д. в зависимости от количества «виртуальных» папок.