[英]Apache and backslashes in mod_rewrite
我想通過一個腳本(Web根目錄中的index.php
)處理所有傳入請求。
因此,以下是當前發生的情況: http://localhost/foo/bar/baz
由Apache(通過.htaccess
)路由到: http://localhost/index.php?url=foo/bar/baz
這很好用,但是,在Firefox中,我可以做到這一點: http://localhost/foo\\
->注意反斜杠 。
和Apache,而不是: /index.php?url=foo\\
發出通用錯誤頁面,內容為:
找不到對象! 在此服務器上找不到請求的URL。 如果您手動輸入網址,請檢查拼寫,然后重試。
如果您認為這是服務器錯誤,請與網站管理員聯系。
錯誤404本地主機Apache / 2.2.14(Win32)DAV / 2 mod_ssl / 2.2.14 OpenSSL / 0.9.8l mod_autoindex_color PHP / 5.3.1 mod_apreq2-20090110 / 2.7.1 mod_perl / 2.0.4 Perl / v5.10.1
但是,直接轉到: http://localhost/index.php?url=foo\\
可以正常工作。
我在互聯網上看到的所有站點似乎都可以正常處理反斜杠(例如, http://stackoverflow.com/tags/php\\\\\\\\\\
)。
我認為此行為是一個錯誤,我想強制Apache正確轉發反斜杠。 這是我的整個.htaccess
文件:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [L]
我該如何使其正常工作?
編輯:我只是在我的虛擬主機上嘗試過,這是他們正確處理的。 讓我認為這是httpd.conf
的某些設置。
我只是在Windows的WampServer上遇到此問題。 此頁面具有解決方案-RobertPitt上面提到的AllowEncodedSlashes
選項是正確的,但它必須放在VirtualHost塊內的http.conf
文件中,例如:
<VirtualHost *:80>
AllowEncodedSlashes On
</VirtualHost>
.htaccess
文件中不起作用。
可能需要關閉AcceptPathInfo才能將那些容忍為正斜杠。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.