Назад | Перейти на главную страницу

mod_rewrite: внутренняя перезапись на (поддельный) чистый URL-адрес невозможна.

Это больше Зачем вопрос.

Я использую CMS, которая обрабатывает чистые URL-адреса через mod_rewrite из коробки.

На сайте есть раздел /accessories который теперь должен быть переименован в /store.

Находясь в ленивом режиме, я просто хотел выполнить внутреннюю перезапись с помощью mod_rewrite, поэтому при доступе к example.com/store/, Я хочу получать контент из example.com/accessoriesпрозрачно, без внешнего перенаправления.

До сих пор я пробовал это:

RewriteEngine On

# Internally rewrite /store to /accessories
RewriteRule ^store /accessories [L] #also tried with other flags like PT, N, C

# All below rules are provided by CMS
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+) - [PT,L]

RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(.*) index.php

Но ничего не работало.

Я мог заставить это работать двумя единственными способами:

Я только что пришел к выводу, что URL-адреса не могут быть внутренне переписаны на другие (поддельные) чистые URL-адреса, при этом сохраняется цепочка перезаписи. Под «фальшивым» я подразумеваю пути URL, которые не являются реальными путями файловой системы (обычно папки) или реальными файлами (например, index.php).

Итак, вопрос: почему?