2013-03-21 7 views
1

Я пытаюсь установить свой сервер Nginx на igonre, если посетители используют нижний или верхний регистр в адресе. Например, я хочу, чтобы и www.mydomain.com/section, и www.mydomain.com/Section указывали на один и тот же каталог.Как настроить Nginx игнорировать регистр букв в имени хоста?

Я много искал, чтобы узнать, могу ли я сделать это через конфигурацию vhost, но я не мог найти.

Кто-нибудь?

Моя конфигурация ВХост идет так:

server { 
## Your website name goes here. 
server_name server.com; 
## Your only path reference. 
root /var/www/citeu; 
listen 80; 
client_max_body_size 40M; 
## This should be in your http block and if it is, it's not needed here. 
index index.php index.htm index.html; 

include conf.d/drop; 

    location/{ 
      # This is cool because no php is touched for static content 
     try_files $uri $uri/ /index.php?q=$uri&$args; 
    } 

    location ~ \.php$ { 
     fastcgi_buffers 4 256k; 
     fastcgi_buffer_size 128k; 
     fastcgi_intercept_errors on; 
     include fastcgi_params; 
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
     fastcgi_pass unix:/dev/shm/php-fpm-www.sock; 
     fastcgi_max_temp_file_size 50M; 


    } 

     # BEGIN W3TC Page Cache cache 
location ~ /wp-content/w3tc/pgcache.*html$ { 
    add_header Vary "Accept-Encoding, Cookie"; 
} 

location ~ /wp-content/w3tc/pgcache.*gzip$ { 
    gzip off; 
    types {} 
    default_type text/html; 
    add_header Vary "Accept-Encoding, Cookie"; 
    add_header Content-Encoding gzip; 
} 
# END W3TC Page Cache cache 
# BEGIN W3TC Browser Cache 
gzip on; 
gzip_types text/css application/x-javascript text/x-component text/richtext image/svg+xml text/plain text/xsd text/xsl text/xml image/x-icon; 
location ~ \.(css|js|htc)$ { 
} 
location ~ \.(html|htm|rtf|rtx|svg|svgz|txt|xsd|xsl|xml)$ { 
} 
location ~ \.(asf|asx|wax|wmv|wmx|avi|bmp|class|divx|doc|docx|eot|exe|gif|gz|gzip|ico|jpg|jpeg|jpe|mdb|mid|midi|mov|qt|mp3|m4a|mp4|m4v|mpeg|mpg|mpe|mpp|otf|odb|odc|odf|odg|odp|ods|odt|ogg|pdf|png|pot|pps|ppt|pptx|ra|ram|svg|svgz|swf|tar|tif|tiff|ttf|ttc|wav|wma|wri|xla|xls|xlsx|xlt|xlw|zip)$ { 
} 
# END W3TC Browser Cache 
# BEGIN W3TC Page Cache core 
rewrite ^(.*\/)?w3tc_rewrite_test$ $1?w3tc_rewrite_test=1 last; 
set $w3tc_rewrite 1; 
if ($request_method = POST) { 
    set $w3tc_rewrite 0; 
} 
if ($query_string != "") { 
    set $w3tc_rewrite 0; 
} 
if ($http_host !~ "server.com") { 
    set $w3tc_rewrite 0; 
} 
set $w3tc_rewrite3 1; 
if ($request_uri ~* "(\/wp-admin\/|\/xmlrpc.php|\/wp-(app|cron|login|register|mail)\.php|\/feed\/|wp-.*\.php|index\.php)") { 
    set $w3tc_rewrite3 0; 
} 
if ($request_uri ~* "(wp\-comments\-popup\.php|wp\-links\-opml\.php|wp\-locations\.php)") { 
    set $w3tc_rewrite3 1; 
} 
if ($w3tc_rewrite3 != 1) { 
    set $w3tc_rewrite 0; 
} 
if ($http_cookie ~* "(comment_author|wp\-postpass|wordpress_\[a\-f0\-9\]\+|wordpress_logged_in)") { 
    set $w3tc_rewrite 0; 
} 
if ($http_user_agent ~* "(W3\ Total\ Cache/0\.9\.2\.4)") { 
    set $w3tc_rewrite 0; 
} 
set $w3tc_ua ""; 
set $w3tc_ref ""; 
set $w3tc_ssl ""; 
set $w3tc_enc ""; 
if ($http_accept_encoding ~ gzip) { 
    set $w3tc_enc _gzip; 
} 
set $w3tc_ext ""; 
if (-f "$document_root/wp-content/w3tc/pgcache/$request_uri/_index$w3tc_ua$w3tc_ref$w3tc_ssl.html$w3tc_enc") { 
    set $w3tc_ext .html; 
} 
if ($w3tc_ext = "") { 
    set $w3tc_rewrite 0; 
} 
if ($w3tc_rewrite = 1) { 
    rewrite .* "/wp-content/w3tc/pgcache/$request_uri/_index$w3tc_ua$w3tc_ref$w3tc_ssl$w3tc_ext$w3tc_enc" last; 
} 
# END W3TC Page Cache core 

}

ответ

0

Ваша проблема не с именем хоста, то с блоком определения местоположения и имени файла.

В терминах блоков местоположения, вы можете сделать регистрозависимости матч с этим оператором ~*

Большинство файловых систем чувствительны к регистру, поэтому, если файл, который вы служите реально. .. у вас, вероятно, будет проблема.

большинство людей сделать что-то вроде этого:

  • убедиться, что все в нижнем регистре
  • использовать директиву try_files файлы к сбою на PHP скрипт, который просто перенаправляет на совершенно строчной URL

есть сторонняя библиотека, которая может выполнять преобразования строк lowsercase (http://wiki.nginx.org/3rdPartyModules)

+0

Эй Джонатан, большое спасибо за Ваш ответ. Это действительно экономит часы исследований в сети! – pedrosimao

1

Я также нашел еще одно временное решение Тион.

я использовал:

location ~ /Folder { 
     rewrite ^/([^/]*)(.*)$ /folder;} 

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

+0

Мои конечные цели состоят в том, чтобы сделать/folDer или/fOlder или любое письмо в верхнем регистре, которое посетитель может ввести, чтобы стать полностью строчным, например:/folder – pedrosimao

0

ниже работал для меня, чтобы открыть (ibeacons.html) прописными или строчными буквами

location ~* /ibeacons.html { 

try_files $uri $uri/ /ibeacons.html; 

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

  • Нет связанных вопросов^_^