2013-05-22 2 views
0

Я использую следующий код для перенаправления всех URL-адресов, с последним вложенным в него эквивалентным малым вариантом версии того же URL-адреса.Переадресация с помощью htaccess rewrite map

RewriteEngine On 
RewriteCond %{REQUEST_URI} [A-Z] 
RewriteRule (.*) ${lc:$1} [R=301,L] 
RewriteMap lc int:tolower 

так ничего подобного http://host/InDex.php перенаправляется http://host/index.php

Но мне нужно такое поведение только для CakePHP маршрутизируемого URLs. app/users/1 не для файлов, которые существуют на сервере.

ответ

0

Сначала вам нужно понять, что RewriteMap не разрешен в .htaccess. Он должен войти в конфигурацию Apache, например. httpd.conf, как только это будет сделано заменить код с этим:

Options +FollowSymLinks -MultiViews 
# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-l 
RewriteRule ^([^A-Z]*[A-Z].*)$ ${lc:$1} [R=302,L] 

После того, как вы убедитесь, что он работает нормально, замените R=302 на R=301. Избегайте использования R=301 (Перманентный переадресация) при тестировании ваших правил mod_rewrite.

Смежные вопросы