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