2009-08-22 41 views
1

首先看看這個網址在IIS或Apache參數:傳遞不存在的目錄作爲

https://stackoverflow.com/questions/tagged/xoxoxo/

此目錄不存在,但不知何故,計算器可以傳遞最後一個目錄作爲參數傳遞給他的基地腳本。

這樣做可以配置IIS或Apache嗎?怎麼樣?

+0

當我打開那個鏈接我剛剛得到的頁面標題,沒有內容。 – pipTheGeek 2009-08-22 09:47:08

+0

不,你可以在右邊看到: 0問題標籤 – EBAG 2009-08-22 10:01:44

+0

也看到該頁面意味着這個不存在的目錄是以某種方式處理 – EBAG 2009-08-22 10:02:55

回答

5

這種行爲背後的機制被稱爲URL重寫,可以在實現阿帕奇mod_rewrite - 模塊和IIS與任何Helicons ISAPI_Rewrite Lite(或由赫利提供的非自由選擇之一)爲IIS 5.1和或與Microsoft URL Rewrite Module for IIS 7

例如,以下設置將確保在現有文件或目錄中無法匹配的每個請求都將被傳輸到index.php文件。

mod_rewrite(你的文檔根目錄.htaccess或某處你httpd.conf

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} -s [OR] // IF is file (with size > 0) 
RewriteCond %{REQUEST_FILENAME} -l [OR] // OR is symbolic link 
RewriteCond %{REQUEST_FILENAME} -d  // OR is directory 
RewriteRule ^.*$ - [NC,L]    // DO NOTHING 
RewriteRule ^.*$ index.php [NC,L]  // TRANSFER TO index.php 

的ISAPI_Rewrite精簡版(在你的IIS設置相應的對話框)

// uses same syntax as mod_rewrite 
RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 
RewriteRule ^.*$ index.php [NC,L] 

微軟URL重寫模塊(在你的web.config文檔根目錄或seomewhere配置樹)

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <system.webServer> 
     <rewrite> 
      <rules> 
       <clear /> 
       <rule name="MatchExistingFiles" stopProcessing="true"> 
        <match url="^.*$" /> 
        <conditions logicalGrouping="MatchAny"> 
         <add input="{REQUEST_FILENAME}" matchType="IsFile" pattern="" ignoreCase="false" /> 
         <add input="{REQUEST_FILENAME}" matchType="IsDirectory" pattern="" ignoreCase="false" /> 
        </conditions> 
        <action type="None" /> 
       </rule> 
       <rule name="RemapMVC" stopProcessing="true"> 
        <match url="^.*$" /> 
        <conditions logicalGrouping="MatchAll" /> 
        <action type="Rewrite" url="index.php" /> 
       </rule> 
      </rules> 
     </rewrite> 
    </system.webServer> 
</configuration>