簡體   English   中英

Apache和mod_rewrite中的反斜杠

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM