2016-04-15 62 views
1

感謝您閱讀我的問題。刪除URL中的雙斜槓並刪除index.php Apache

我有一個應用程序(PHP)在Apache網絡服務器上運行(此刻在舊的Apache 2.2.17上)。現在我將把Apache升級到2.4.18。

爲了從url中刪除index.php,有一個.htaccess文件。與此規則。

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule .* index.php/$0 [PT,L] 

在某些請求的應用程序創建POST請求喜歡

http://www.xyz.yz//targetname/targetname2/ 

雙斜線// URL路徑。

在Apache 2.2.17上這個url沒有問題,但Apache 2.4.18創建了404錯誤。

我玩過很多像這樣的重寫規則:

RewriteCond %{REQUEST_URI} ^(.*)//(.*)$ [NC] 
RewriteRule . %1/%2 [R=307,L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule .* index.php/$0 [PT,L] 

但現在的客戶端發送POST請求的兩倍。那麼我怎麼能告訴Apache不用重寫例如「忽略」雙引號。

感謝您的想法和解決方案。

回答

2

到域擴展後刪除多個斜線,你可以在htaccess的使用以下規則行吟詩人規則之前:

RewriteEngine on 

RewriteCond %{THE_REQUEST} //+(.+)\sHTTP 
RewriteRule^/%1 [L,R] 

這將多個斜線轉換成一個,

  • example.com/ ///富

  • example.com/foo