1

訪問者がアドレスに小文字または大文字を使用している場合、Nginx サーバーを igonre に設定しようとしています。たとえば、www.mydomain.com/section と www.mydomain.com/Section の両方が同じディレクトリを指すようにします。

仮想ホストの構成でできるかどうか、いろいろ検索しましたが、見つかりませんでした。

誰?

私の 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

}

4

3 に答える 3

1

別の一時的な解決策も見つけました。

私が使用した:

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

訪問者がアクセスしたい特定のフォルダーにアクセスしたい場合に備えて、元のフォルダーとは異なる大文字と小文字を入力します。完璧な解決策にはほど遠いですが、モジュールを正しく使用する方法を理解しながら使用します。

于 2013-03-22T10:41:21.530 に答える
0

問題はホスト名ではなく、ロケーション ブロックとファイル名にあります。

ロケーションブロックに関しては、この演算子を使用して大文字と小文字を区別しない一致を行うことができます~*

ほとんどのファイル システムでは大文字と小文字が区別されるため、提供しているファイルが本物の場合は、問題が発生する可能性があります。

ほとんどの人は次のようなことをします:

  • すべてが小文字であることを確認してください
  • try_files ファイル ディレクティブを使用して、単に完全に小文字の URL にリダイレクトする php スクリプトに失敗する

小文字の文字列変換を実行できるサードパーティのライブラリがあります ( http://wiki.nginx.org/3rdPartyModules )

于 2013-03-21T22:49:40.037 に答える
0

以下は、大文字または小文字で(ibeacons.html)を開くのに役立ちました

 location ~* /ibeacons.html {

 try_files $uri $uri/ /ibeacons.html;
于 2014-10-09T12:41:17.290 に答える