Nano Hash - криптовалюты, майнинг, программирование

Преобразование правил mod_rewrite в .htaccess в httpd.conf

У меня есть набор html-файлов по адресу: www.example.com и «основной сайт» (в бета-версии) по адресу: www.example.com/abcd/ (для которого необходимы эти правила mod_rewrite)

Правила mod_rewrite отлично работают в каталоге внутри .htaccess. Мне нужно поместить их в httpd.conf:

Правила выглядят так в .htaccess:

RewriteEngine On
RewriteBase /abcd/

RewriteRule ^.*/codelibrary/(.*)$ codelibrary/$1 [L]
RewriteRule ^.*/in_upload/images/(.*)$ in_upload/images/$1 [L]
...

Копирование ниже в файл httpd.conf не сработало:

<VirtualHost *:80>
 ServerAlias   www.example.com
 ServerAdmin   [email protected]
 DocumentRoot /var/www/html
 ServerSignature On

 <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /abcd/
    ...

Это дало ошибку:

RewriteBase: only valid in per-directory config files

Мне нужно изменить все правила, как это?

RewriteRule ^.*/abcd/codelibrary/(.*)$ abcd/codelibrary/$1 [L]
RewriteRule ^.*/abcd/in_upload/images/(.*)$ abcd/in_upload/images/$1 [L]

Изменить1

Я попытался преобразовать следующие строки из:

...
RewriteRule (.*)ins.html$ browse.php?type=ins [L]
...
RewriteRule ^([a-zA-Z\-]*)/([a-zA-Z0-9\s]*)/([0-9]*)\.html$ browse.php?type=$1&catId=$3 [L]
RewriteRule ^([a-zA-Z\-]*)/([a-zA-Z0-9\s]*)/([a-zA-Z0-9\s]*)/([0-9]*)/([0-9]*)\.html$ browse.php?type=$1&catId=$4&subCatId=$5 [L]
...

To:

...
RewriteRule ^/abcd/ins.html$ abcd/browse.php?type=ins [L]
...
RewriteRule ^/abcd/([a-zA-Z\-]*)/([a-zA-Z0-9\-\s]*)/([0-9]*)\.html$ abcd/browse.php?type=$1&catId=$3 [L]
RewriteRule ^/abcd/([a-zA-Z\-]*)/([a-zA-Z0-9\-\s]*)/([a-zA-Z0-9\-\s]*)/([0-9]*)/([0-9]*)\.html$ abcd/browse.php?type=$1&catId=$4&subCatId=$5 [L]
...

но я получил следующие ошибки.

Когда я пытаюсь получить доступ к http://www.example.com/abcd/ins/Sustainability/282.html , я получаю в журнале следующую ошибку:

IPADDRESS - - [DATETIME] [www.example.com/sid#2b3cde3c1be0][rid#2b3cec076e70/initial] (2) init rewrite engine with requested uri /abcd/ins/Sustainability/282.html
IPADDRESS - - [DATETIME] [www.example.com/sid#2b3cde3c1be0][rid#2b3cec076e70/initial] (2) rewrite '/abcd/ins/Sustainability/282.html' -> 'abcd/browse.php?type=ins&catId=282'
IPADDRESS - - [DATETIME] [www.example.com/sid#2b3cde3c1be0][rid#2b3cec076e70/initial] (2) local path result: abcd/browse.php

Когда я пытаюсь получить доступ к http://www.example.com/abcd/ins.html, в логе получаю следующую ошибку:

IPADDRESS - - [DATETIME] [www.example.com/sid#2b3cde3c1be0][rid#2b3cec076e70/initial] (2) init rewrite engine with requested uri /abcd/ins.html
IPADDRESS - - [DATETIME] [www.example.com/sid#2b3cde3c1be0][rid#2b3cec076e70/initial] (2) rewrite '/abcd/ins.html' -> 'abcd/browse.php?type=ins'
IPADDRESS - - [DATETIME] [www.example.com/sid#2b3cde3c1be0][rid#2b3cec076e70/initial] (2) local path result: abcd/browse.php

Я установил RewriteLogLevel на 2

Неизмененная версия наших правил mod_rewrite находится по адресу: https://webmasters.stackexchange.com/questions/4237/url-rewrite-pages-take-much-longer-to-load


Ответы:


1

Какова цель правил перезаписи (т.е. чего вы пытаетесь достичь)?

Судя по оригиналу в .htaccess, нужно было перенаправить: www.example.com/abcd/что-нибудь/codelibrary/aaaa на www.example.com/abcd/codelibrary/aaaa

То же самое и для in_upload/images. Это правильно?

Если это так, то это должно работать:

RewriteRule ^/abcd/.*/codelibrary/(.*)$ /abcd/codelibrary/$1 [L]
RewriteRule ^/abcd/.*/in_upload/images/(.*)$ /abcd/in_upload/images/$1 [L]
01.12.2010
  • Привет, @Ben. Не могли бы вы взглянуть на редактирование? Я не думаю, что изменения сработали должным образом. 02.12.2010
  • Это не похоже на ошибки, и похоже, что они успешно передаются в abcd/browse.php, что происходит в конце браузера? 02.12.2010
  • Привет @Ben - он выдает неверный запрос. Ваш браузер отправил запрос, который этот сервер не может понять. для обоих URL-адресов, упомянутых в Edit1 03.12.2010
  • Привет @Ben - в предложенном вами решении была ошибка - оно должно быть таким: RewriteRule ^/abcd/.*/codelibrary/(.*)$ /abcd/codelibrary/$1 [L] [Обратите внимание на / перед abcd/] Можете ли вы изменить ответ, чтобы я мог его принять? 08.12.2010
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..