当我尝试访问像 image%20xyz.jpg 这样的 URL 时,出现了 404 错误。
当我查看日志时,Apache 将 %20 转换为 \xa9(并且每个 url 编码字符都转换为其 \xXY 值而不是正确的字符(在这种情况下为空格)。
我试过允许编码斜杠但这不起作用。
我应该将哪个 Apache 指令放入我的 VirtualHost 或 .htaccess 中,以使
/img/cms/MISC/Certifi%C3%A9%20AB.jpg
变得 :
/img/cms/MISC/Certifié AB.jpg
并不是 :
/img/cms/MISC/Certifi\xc3\xa9 AB.jpg
这是我的 Apache 配置:
<VirtualHost *:80>
ServerName mywebsite.com
Redirect / http://www.mywebsite.com/
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/home/mywebsite.com/www/"
ServerName www.mywebsite.com
<Directory "/home/mywebsite.com/www/">
Options Includes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/log/apache2/mywebsite.com.error.log
LogLevel warn
CustomLog /var/log/apache2/mywebsite.com.access.log combined
ServerSignature Off
</VirtualHost>
我的.htaccess(由Prestashop生成):
# .htaccess automaticaly generated by PrestaShop e-commerce open-source solution
# WARNING: PLEASE DO NOT MODIFY THIS FILE MANUALLY. IF NECESSARY, ADD YOUR SPECIFIC CONFIGURATION WITH THE HTACCESS GENERATOR IN BACK OFFICE
# http://www.prestashop.com - http://www.prestashop.com/forums
SetEnv PHP_VER 5
<IfModule mod_rewrite.c>
# URL rewriting module activation
RewriteEngine on
# URL rewriting rules
RewriteRule ^api/?(.*)$ /webservice/dispatcher.php?url=$1 [QSA,L]
RewriteRule ^([a-z0-9]+)\-([a-z0-9]+)(\-[_a-zA-Z0-9-]*)/[_a-zA-Z0-9-]*\.jpg$ /img/p/$1-$2$3.jpg [L]
RewriteRule ^([0-9]+)\-([0-9]+)/[_a-zA-Z0-9-]*\.jpg$ /img/p/$1-$2.jpg [L]
RewriteRule ^([0-9]+)(\-[_a-zA-Z0-9-]*)/[_a-zA-Z0-9-]*\.jpg$ /img/c/$1$2.jpg [L]
RewriteRule ^([0-9]+)\-[a-zA-Z0-9-]*\.html /product.php?id_product=$1 [QSA,L]
RewriteRule ^([0-9]+)\-[a-zA-Z0-9-]* /category.php?id_category=$1 [QSA,L]
RewriteRule ^[a-zA-Z0-9-]*/([0-9]+)\-[a-zA-Z0-9-]*\.html /product.php?id_product=$1 [QSA,L]
RewriteRule ^([0-9]+)__([a-zA-Z0-9-]*) /supplier.php?id_supplier=$1 [QSA,L]
RewriteRule ^([0-9]+)_([a-zA-Z0-9-]*) /manufacturer.php?id_manufacturer=$1 [QSA,L]
RewriteRule ^content/([0-9]+)\-([a-zA-Z0-9-]*) /cms.php?id_cms=$1 [QSA,L]
RewriteRule ^content/category/([0-9]+)\-([a-zA-Z0-9-]*) /cms.php?id_cms_category=$1 [QSA,L]
RewriteRule ^([a-z]{2})/[a-zA-Z0-9-]*/([0-9]+)\-[a-zA-Z0-9-]*\.html /product.php?id_product=$2&isolang=$1 [QSA,L]
RewriteRule ^([a-z]{2})/([0-9]+)\-[a-zA-Z0-9-]*\.html /product.php?id_product=$2&isolang=$1 [QSA,L]
RewriteRule ^([a-z]{2})/([0-9]+)\-[a-zA-Z0-9-]* /category.php?id_category=$2&isolang=$1 [QSA,L]
RewriteRule ^([a-z]{2})/content/([0-9]+)\-[a-zA-Z0-9-]* /cms.php?isolang=$1&id_cms=$2 [QSA,L]
RewriteRule ^([a-z]{2})/content/category/([0-9]+)\-[a-zA-Z0-9-]* /cms.php?isolang=$1&id_cms_category=$2 [QSA,L]
RewriteRule ^([a-z]{2})/([0-9]+)__[a-zA-Z0-9-]* /supplier.php?isolang=$1&id_supplier=$2 [QSA,L]
RewriteRule ^([a-z]{2})/([0-9]+)_[a-zA-Z0-9-]* /manufacturer.php?isolang=$1&id_manufacturer=$2 [QSA,L]
RewriteRule ^en/page-not-found$ /404.php?isolang=en [QSA,L]
RewriteRule ^en/address$ /address.php?isolang=en [QSA,L]
RewriteRule ^en/addresses$ /addresses.php?isolang=en [QSA,L]
RewriteRule ^en/authentication$ /authentication.php?isolang=en [QSA,L]
RewriteRule ^en/best-sales$ /best-sales.php?isolang=en [QSA,L]
RewriteRule ^en/cart$ /cart.php?isolang=en [QSA,L]
RewriteRule ^en/contact-us$ /contact-form.php?isolang=en [QSA,L]
RewriteRule ^en/discount$ /discount.php?isolang=en [QSA,L]
RewriteRule ^en/guest-tracking$ /guest-tracking.php?isolang=en [QSA,L]
RewriteRule ^en/order-history$ /history.php?isolang=en [QSA,L]
RewriteRule ^en/identity$ /identity.php?isolang=en [QSA,L]
RewriteRule ^en/manufacturers$ /manufacturer.php?isolang=en [QSA,L]
RewriteRule ^en/my-account$ /my-account.php?isolang=en [QSA,L]
RewriteRule ^en/new-products$ /new-products.php?isolang=en [QSA,L]
RewriteRule ^en/order$ /order.php?isolang=en [QSA,L]
RewriteRule ^en/order-follow$ /order-follow.php?isolang=en [QSA,L]
RewriteRule ^en/quick-order$ /order-opc.php?isolang=en [QSA,L]
RewriteRule ^en/order-slip$ /order-slip.php?isolang=en [QSA,L]
RewriteRule ^en/password-recovery$ /password.php?isolang=en [QSA,L]
RewriteRule ^en/prices-drop$ /prices-drop.php?isolang=en [QSA,L]
RewriteRule ^en/search$ /search.php?isolang=en [QSA,L]
RewriteRule ^en/sitemap$ /sitemap.php?isolang=en [QSA,L]
RewriteRule ^en/stores$ /stores.php?isolang=en [QSA,L]
RewriteRule ^en/supplier$ /supplier.php?isolang=en [QSA,L]
RewriteRule ^en/([^?&]*) /$1?isolang=en [QSA,L]
RewriteRule ^fr/page-non-trouvee$ /404.php?isolang=fr [QSA,L]
RewriteRule ^fr/adresse$ /address.php?isolang=fr [QSA,L]
RewriteRule ^fr/adresses$ /addresses.php?isolang=fr [QSA,L]
RewriteRule ^fr/authentification$ /authentication.php?isolang=fr [QSA,L]
RewriteRule ^fr/meilleures-ventes$ /best-sales.php?isolang=fr [QSA,L]
RewriteRule ^fr/panier$ /cart.php?isolang=fr [QSA,L]
RewriteRule ^fr/contactez-nous$ /contact-form.php?isolang=fr [QSA,L]
RewriteRule ^fr/bons-de-reduction$ /discount.php?isolang=fr [QSA,L]
RewriteRule ^fr/suivi-commande-invite$ /guest-tracking.php?isolang=fr [QSA,L]
RewriteRule ^fr/historique-des-commandes$ /history.php?isolang=fr [QSA,L]
RewriteRule ^fr/identite$ /identity.php?isolang=fr [QSA,L]
RewriteRule ^fr/fabricants$ /manufacturer.php?isolang=fr [QSA,L]
RewriteRule ^fr/mon-compte$ /my-account.php?isolang=fr [QSA,L]
RewriteRule ^fr/nouveaux-produits$ /new-products.php?isolang=fr [QSA,L]
RewriteRule ^fr/commande$ /order.php?isolang=fr [QSA,L]
RewriteRule ^fr/details-de-la-commande$ /order-follow.php?isolang=fr [QSA,L]
RewriteRule ^fr/commande-rapide$ /order-opc.php?isolang=fr [QSA,L]
RewriteRule ^fr/avoirs$ /order-slip.php?isolang=fr [QSA,L]
RewriteRule ^fr/mot-de-passe-oublie$ /password.php?isolang=fr [QSA,L]
RewriteRule ^fr/promotions$ /prices-drop.php?isolang=fr [QSA,L]
RewriteRule ^fr/recherche$ /search.php?isolang=fr [QSA,L]
RewriteRule ^fr/plan-du-site$ /sitemap.php?isolang=fr [QSA,L]
RewriteRule ^fr/magasins$ /stores.php?isolang=fr [QSA,L]
RewriteRule ^fr/fournisseurs$ /supplier.php?isolang=fr [QSA,L]
RewriteRule ^fr/([^?&]*) /$1?isolang=fr [QSA,L]
RewriteRule ^es/pagina-no-encuentra$ /404.php?isolang=es [QSA,L]
RewriteRule ^es/direccion$ /address.php?isolang=es [QSA,L]
RewriteRule ^es/direcciones$ /addresses.php?isolang=es [QSA,L]
RewriteRule ^es/autenticacion$ /authentication.php?isolang=es [QSA,L]
RewriteRule ^es/mas-vendidos$ /best-sales.php?isolang=es [QSA,L]
RewriteRule ^es/carro-de-la-compra$ /cart.php?isolang=es [QSA,L]
RewriteRule ^es/contactenos$ /contact-form.php?isolang=es [QSA,L]
RewriteRule ^es/descuento$ /discount.php?isolang=es [QSA,L]
RewriteRule ^es/estado-pedido$ /guest-tracking.php?isolang=es [QSA,L]
RewriteRule ^es/historial-de-pedidos$ /history.php?isolang=es [QSA,L]
RewriteRule ^es/identidad$ /identity.php?isolang=es [QSA,L]
RewriteRule ^es/fabricantes$ /manufacturer.php?isolang=es [QSA,L]
RewriteRule ^es/mi-cuenta$ /my-account.php?isolang=es [QSA,L]
RewriteRule ^es/nuevos-productos$ /new-products.php?isolang=es [QSA,L]
RewriteRule ^es/carrito$ /order.php?isolang=es [QSA,L]
RewriteRule ^es/devolucion-de-productos$ /order-follow.php?isolang=es [QSA,L]
RewriteRule ^es/pedido-rapido$ /order-opc.php?isolang=es [QSA,L]
RewriteRule ^es/vales$ /order-slip.php?isolang=es [QSA,L]
RewriteRule ^es/contrasena-olvidado$ /password.php?isolang=es [QSA,L]
RewriteRule ^es/promocion$ /prices-drop.php?isolang=es [QSA,L]
RewriteRule ^es/buscar$ /search.php?isolang=es [QSA,L]
RewriteRule ^es/mapa-del-sitio$ /sitemap.php?isolang=es [QSA,L]
RewriteRule ^es/tiendas$ /stores.php?isolang=es [QSA,L]
RewriteRule ^es/proveedores$ /supplier.php?isolang=es [QSA,L]
RewriteRule ^es/([^?&]*) /$1?isolang=es [QSA,L]
RewriteRule ^de/seite-nicht-gefunden$ /404.php?isolang=de [QSA,L]
RewriteRule ^de/adresse$ /address.php?isolang=de [QSA,L]
RewriteRule ^de/adressen$ /addresses.php?isolang=de [QSA,L]
R ewriteRule ^de/authentifizierung$ /authentication.php?isolang=de [QSA,L]
RewriteRule ^de/verkaufshits$ /best-sales.php?isolang=de [QSA,L]
RewriteRule ^de/warenkorb$ /cart.php?isolang=de [QSA,L]
RewriteRule ^de/kontaktieren-sie-uns$ /contact-form.php?isolang=de [QSA,L]
RewriteRule ^de/discount$ /discount.php?isolang=de [QSA,L]
RewriteRule ^de/auftragsverfolgung-gast$ /guest-tracking.php?isolang=de [QSA,L]
RewriteRule ^de/bestellungsverlauf$ /history.php?isolang=de [QSA,L]
RewriteRule ^de/kennung$ /identity.php?isolang=de [QSA,L]
RewriteRule ^de/hersteller$ /manufacturer.php?isolang=de [QSA,L]
RewriteRule ^de/mein-Konto$ /my-account.php?isolang=de [QSA,L]
RewriteRule ^de/neue-Produkte$ /new-products.php?isolang=de [QSA,L]
RewriteRule ^de/bestellung$ /order.php?isolang=de [QSA,L]
RewriteRule ^de/bestellungsverfolgung$ /order-follow.php?isolang=de [QSA,L]
RewriteRule ^de/schnell-bestellung$ /order-opc.php?isolang=de [QSA,L]
RewriteRule ^de/bestellschein$ /order-slip.php?isolang=de [QSA,L]
RewriteRule ^de/kennwort-wiederherstellung$ /password.php?isolang=de [QSA,L]
RewriteRule ^de/angebote$ /prices-drop.php?isolang=de [QSA,L]
RewriteRule ^de/suche$ /search.php?isolang=de [QSA,L]
RewriteRule ^de/sitemap$ /sitemap.php?isolang=de [QSA,L]
RewriteRule ^de/shops$ /stores.php?isolang=de [QSA,L]
RewriteRule ^de/zulieferer$ /supplier.php?isolang=de [QSA,L]
RewriteRule ^de/([^?&]*) /$1?isolang=de [QSA,L]
RewriteRule ^it/pagina-non-trovata$ /404.php?isolang=it [QSA,L]
RewriteRule ^it/indirizzo$ /address.php?isolang=it [QSA,L]
RewriteRule ^it/indirizzi$ /addresses.php?isolang=it [QSA,L]
RewriteRule ^it/autenticazione$ /authentication.php?isolang=it [QSA,L]
RewriteRule ^it/vendite-migliori$ /best-sales.php?isolang=it [QSA,L]
RewriteRule ^it/carrello$ /cart.php?isolang=it [QSA,L]
RewriteRule ^it/contattaci$ /contact-form.php?isolang=it [QSA,L]
RewriteRule ^it/sconto$ /discount.php?isolang=it [QSA,L]
RewriteRule ^it/ospite-monitoraggio$ /guest-tracking.php?isolang=it [QSA,L]
RewriteRule ^it/storico-ordine$ /history.php?isolang=it [QSA,L]
RewriteRule ^it/identite$ /identity.php?isolang=it [QSA,L]
RewriteRule ^it/produttori$ /manufacturer.php?isolang=it [QSA,L]
RewriteRule ^it/il-mio-account$ /my-account.php?isolang=it [QSA,L]
RewriteRule ^it/nuovi-prodotti$ /new-products.php?isolang=it [QSA,L]
RewriteRule ^it/ordine$ /order.php?isolang=it [QSA,L]
RewriteRule ^it/seguito-ordine$ /order-follow.php?isolang=it [QSA,L]
RewriteRule ^it/ordine-veloce$ /order-opc.php?isolang=it [QSA,L]
RewriteRule ^it/nota-di-ordine$ /order-slip.php?isolang=it [QSA,L]
RewriteRule ^it/password-recupero$ /password.php?isolang=it [QSA,L]
RewriteRule ^it/riduzione-prezzi$ /prices-drop.php?isolang=it [QSA,L]
RewriteRule ^it/cerca$ /search.php?isolang=it [QSA,L]
RewriteRule ^it/sitemap$ /sitemap.php?isolang=it [QSA,L]
RewriteRule ^it/negozi$ /stores.php?isolang=it [QSA,L]
RewriteRule ^it/fornitore$ /supplier.php?isolang=it [QSA,L]
RewriteRule ^it/([^?&]*) /$1?isolang=it [QSA,L]
</IfModule>
# Catch 404 errors
ErrorDocument 404 /404.php
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType text/css "access plus 1 week"
ExpiresByType text/javascript "access plus 1 week"
ExpiresByType application/javascript "access plus 1 week"
ExpiresByType application/x-javascript "access plus 1 week"
ExpiresByType image/x-icon "access plus 1 year"
</IfModule>
FileETag INode MTime Size
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
</IfModule>
感谢您的帮助。