私はホストするnginxvHostを手に入れました:
/
_のCMS/store
_のMagentoショップ1つを除いて、問題はありません。
URLからindex.phpを削除します。現在、以下のURLが機能しています
_example.com/store/index.php/my-funny-test-product.html and (as there are a few subshops in magento)
example.com/store/index.php/city/my-funny-test-product.html
_
次に、index.phpをURLから削除できるように、リダイレクトを作成する必要があります。
_example.com/store/my-funny-test-product.html or example.com/store/city/my-funny-test-product.html
_
この.htaccessを使用してローカルApacheで動作するようになりました
_RewriteEngine on
RewriteBase /store/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule .* index.php [L]
_
これに基づいて、私は次の書き直しを構築しました
_location /store {
rewrite ^/store /store/index.php;
}
_
これで_example.com/store/my-funny-test-product.html
_は機能しますが、CSS画像などが壊れています! if (!-e $request_filename)
を追加して修正しようとしましたが、nginx40xエラーが発生しました。
Css&coを壊さず、URLにindex.phpを含めずに、サブフォルダー/ storeへの_example.com/store/my-funny-test-product.html
_と_example.com/store/city/my-funny-test-product.html
_の実用的な書き換えを実現するにはどうすればよいですか?
これが完全なvhost設定です
_ ## The whole setup stays close with the magento recommendations
## http://www.magentocommerce.com/wiki/1_-_installation_and_configuration/configuring_nginx_for_magento
server {
listen myip:80;
server_name .example.com;
root /var/www/mydomain/public_html;
location / {
index index.html index.php;
try_files $uri $uri/ @handler;
}
## here comes my rewrite stuff to remove index.php from the subfolder ##
location /store {
rewrite ^/store /store/index.php;
}
## followed by some deny rulesets not relevant here ##
location @handler { ## Magento common front handler
rewrite / /index.php;
}
location ~ .php/ { ## Forward paths like /js/index.php/x.js to relevant handler
rewrite ^(.*.php)/ $1 last;
}
location ~ .php$ { ## Execute PHP scripts
if (!-e $request_filename) { rewrite / /index.php last; } ## Catch 404s that try_files miss
expires off; ## Do not cache dynamic content
fastcgi_pass 127.0.0.1:9000;
fastcgi_param HTTPS $fastcgi_https;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param MAGE_RUN_CODE default; ## Store code is defined in administration > Configuration > Manage Stores
fastcgi_param MAGE_RUN_TYPE store;
include fastcgi_params; ## See /etc/nginx/fastcgi_params
}
_
これでexample.com/store/my-funny-test-product.htmlは機能しますが、CSS画像などが壊れています!
要求が無条件に/var/www/example.com/public_html/store
にルーティングされるため、cssファイル(または/store/index.php
内の実際のファイル)の要求は現在機能していません。それを機能させるために必要な最小限の変更は、使用することです try_files :
## here comes my rewrite stuff to remove index.php from the subfolder ##
location /store {
# rewrite ^/store /store/index.php; NO
try_files $uri /store/index.php;
}
このようにして、次のファイルが存在する場合:
/var/www/example.com/public_html/store/css/style.css
次に、次のURLがそのコンテンツを返します。
http://example.com/store/css/style.css
また、ファイルに直接マップされない/store
で始まるリクエストは、/store/index.php
に渡されます。