Возможен ли регистронезависимый 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>

1 ответ

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

апаш .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>
Другие вопросы по тегам