2011-01-19 69 views
3

我得在.htaccess如下:

RewriteCond %{REQUEST_URI} !app/index\.php$ 
RewriteRule ^(.*\.htm)$ index.php?url=$0 [QSA,L] 

Everyting的偉大工程,但結果網址有空$ _ POST。

我100%確定它是mod_rewrite錯誤,而不是HTML或PHP,因爲當我將[QSA,L]更改爲[L]時,它的效果很好。但我真的需要QSA。

它發生在大約30%的託管,所以這可能是一些Apache配置選項。

+3

你可以檢查看看是否有任何可用在$ _REQUEST(包括$ _GET和$ _POST) - 我很好奇你的$ _POST值是否正在轉換爲$ _GET值... – Fenton 2011-01-19 08:37:40

+0

是的,我檢查過。 $ _REQUEST只填充$ _GET值 – luchaninov 2011-01-19 20:53:32

+0

在查詢中我困惑了幾次的事情是$ 0而不是$ 1 – karlcow 2011-01-27 00:03:24

回答

0

以這種方式修改規則怎麼樣。它會改變什麼嗎?

RewriteRule ^(.*)\.htm$ index.php?url=$0.htm [QSA,L] 
+0

我試過了。結果相同。 – luchaninov 2011-01-27 12:16:47

-1

我就是這個問題。它在一臺服務器上運行,然後不在下一臺服煩人而費時地說至少!

經過大量使用這個PHP檢查:

foreach ($_REQUEST AS $key => $value) echo $value."<br>"; 

在index.php文件頂部檢查正在從htaccess文件,(和許多其他檢查我不會去送什麼樣的價值觀!)我最終發現你需要指定「RewriteBase」

RewriteBase /添加到htaccess文件的頂部,使它可以在我試過的所有服務器上工作。

(還記得設置爲:RewriteBase /folder-where-file-is/ 其中,「文件夾,其中,文件是」是index.php文件的位置,如果在子文件夾)

希望它可以幫助你 - 知道這肯定會在很多小時前幫助我!

0

默認情況下,..也許APACHE不會啓用mod_rewrite的,試試你的控制檯上輸入這個

sudo a2enmod rewrite

品嚐我的.htaccess

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase/
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ index.php?/$1 [L] 
</IfModule> 

<IfModule !mod_rewrite.c> 
    ErrorDocument 404 /index.php 
</IfModule> 
相關問題