2013-05-07 34 views
0

有人可以幫助我再次對此重寫模塊,國防部重寫內部錯誤500多個斜線

本細則

RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule (.*) $1.php [QSA,L] 

這個規則,我可以得到所請求的URL www.example.com/test to www.example.com/test.php 但我怎麼能得到以下網址 www.example.com/test/test2/test3/test4到www.example.com/test.php

我試過

RewriteRule (.*)/?$ $1.php [QSA,L] 

在別笑我......我真的試圖

RewriteRule (.*)/(.*)/(.*)/(.*)$ $1.php [QSA,L] 

,這適用於該鏈接

www.example.com/test/test2/test3/test4到www .example.com的/ test.php的

,但不是這一個...

www.example.com/test到www.example.com/test.php

我使用爆炸在PHP導致我不知道有多少個參數,我需要,如果它只有2個參數,並且這個規則應該是工作。

RewriteRule ^(.+/)?([^/]*)$ p.php?s=%1&p=$2 [QSA,L,NC] 

我一直在檢查每個類似的問題,這些問題出現在右側,但我還沒有看到任何解決方案。

回答

0

您正在創建無盡的重定向。嘗試在請求中檢查.php。另外,如果你不拉動斜線,Apache會重定向到某個文件夾內不存在的index.php。

實施例1

RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/.]+)/ $1.php [QSA,L] 

這需要相匹配的第一個目錄,並將其拉入查詢字符串。

www.example.com/file/param1/param2/param3示出了本www.example.com/file.php

實施例2

RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/.]+)/(.*)$ $1.php?params=$2 [QSA,L] 

這需要相匹配的第一個目錄,並將其拉入查詢字符串。的URI的其餘部分被添加作爲一個參數

www.example.com/file/param1/param2/param3 示出了本www.example.com/file.php?params=param1/param2/param3

實施例3

RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/.]+)/?([^/.]+)?/?([^/.]+)?/?([^/.]+)?$ $1.php?p1=$2&p2=$3&p3=$4 [QSA,L] 

www.example.com/file/param1/param2/param3 示出了本www.example.com/file.php?p1=param1&p2=param2&p3=param3


注:[QSA]保留現有參數,因此將&original_parameter=param附加到重寫的查詢字符串。

+0

感謝您的答覆,但據我所知,它會將所有請求重定向到文件test.php,不是嗎? 但我想要的實際上腳本文件的斜槓後面的第一個值,然後其餘的將被忽略。 例如www.example.com/file/param1/param2/param3 這個www.example.com/file.php – h4uw1n3 2013-05-08 07:50:39

+0

我試過這個網站 http://www.generateit.net/mod-rewrite/ 它給出結果 對此 www.example.com/file/param1/param2/ param3這個www.example.com/file.php?params=param1/param2/param3 但它不起作用。任何其他想法? – h4uw1n3 2013-05-08 07:53:03

+0

真棒...這是一個快速響應,無論如何,示例2適用於www.example.com/file/和www.example.com/file/params/params,但不適用於www.example.com/file然後我看着你的第三個例子,我添加了一個「?」像這樣.. RewriteRule ^([^ /。] +)/?(。*)$ $ 1.php?params = $ 2 [QSA,L] ...完成了...太棒了!非常感謝....太糟糕了,我不能投票你回答.... – h4uw1n3 2013-05-08 09:25:48