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

Возможен ли URL-адрес без учета регистра в RH7 с Apache?

ОБНОВЛЕНО 23-08-2017, см. Раздел ниже

Я хочу сделать URL-адреса в RedHat 7 без учета регистра непосредственно перед доступом Apache к объявленному каталогу.

Я пробовал с mod_rewrite и mod_speling. Ни один из них не работает. Я знаю, что Linux - операционная система с учетом регистра.

Моя цель - сделать URL-адрес моего API независимым от регистра. Я уже объявил минимальные настройки для httpd, просто он даже работает. Я также добавил необходимые модули для конкретной задачи или настройки.

Что мне делать? Или даже лучше: пожалуйста, объясните мне, как это возможно или почему не работает?


ОБНОВЛЕНО 23-08-2017

Я получаю ошибку 403 (запрещено) с сообщением о том, что у меня нет разрешения на доступ к / API / v1 / на сервере, когда я вызываю свой API следующим образом:

https://servername/API/v1

Вот выдержка из настройки Apache (httpd):

## Rewriting URLs
# The URL rewrite engine switch
RewriteEngine On

# The rewrite map for certain parameters like function()
RewriteMap lowercase int:tolower

# Make all HTTP request to lowercase
<If "%{REQUEST_URI} =~ m#[A-Z]#">
  RewriteCond %{REQUEST_URI} [A-Z]
  RewriteRule (.*) ${lowercase:$1} [L]
</If>

# Make all HTTP request to HTTPS
<If "%{HTTPS} == 'off'">
  RewriteCond %{HTTPS} off [NC]
  RewriteRule (.*) https://%{SERVER_NAME}%{REQUEST_URI} [R=301,NC,L]
</If>

## Directory Access
# Deny access Serverroot  - Never delete this!
<Directory />
  Require all denied
  AllowOverride None
  Options None
</Directory>

# Allow documents to be served from the DocumentRoot
<Directory "/path/to/my/api/v1">
  Require all granted

  DirectoryIndex index.php
  Options +Indexes +FollowSymLinks
</Directory>

Просто сделайте все свои URL-адреса строчными буквами, точка. Любой верхний регистр преобразуется в нижний регистр путем перенаправления на эквивалент нижнего регистра. Это делает его нечувствительным к регистру, не позволяя использовать верхний регистр и прозрачно изменяя URL-адрес на все строчные.

Apache .htaccess код:

<IfModule mod_rewrite.c>
RewriteMap lc int:tolower
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} [A-Z]
RewriteRule ^(.*)$ ${lc:$1} [R=301,L]
</IfModule>