2010-06-17 38 views
1

我已經做好了一切。我的服務器啓用了mod_rewrite,我的虛擬主機路徑將AllowOverride設置爲All,並且我有.htaccess文件,重寫規則與所有人相同。但是我無法使用乾淨的url路徑訪問某些頁面。因此,對於90%的網頁,乾淨的網址可以正常工作。但是,對於那10%,他們沒有。Drupal Clean Url隨機打破任意路徑

我檢查了這些網頁是否存在 - 他們這樣做。檢查它們是否可以使用index.php?q = [path] - 它們是。他們只能通過乾淨的網址路徑無法訪問。

任何人都可以幫助我解決這個問題嗎?

回答

0

mod_rewrite有幾個長期存在的錯誤,通過URL(通過你的問題URL有任何轉義字符?)。我不知道Drupal是否這樣做,但是在其他PHP應用程序中,我必須添加代碼才能在正確的入口點到達後重新進行重寫。

不幸的是,Drupal無法在PATH_INFO(如許多其他應用程序那樣)中搜索路徑,否則您可以使用mod_alias,它更簡單,更可靠。

+0

我不這麼認爲。以下是其中一個路徑,例如:node/add/product。這就像他們來的那樣簡單。 – picardo 2010-06-17 19:22:49

+0

我的意思是你的網址被改寫(通過'mod_rewrite')到'index.php?q = node/add/product',查詢字符串中的路徑而不是'index.php/node/add/product'路徑作爲一條路徑。 – 2010-06-17 20:00:13

1

因爲你可以通過q = path/to/menu/item來訪問你的頁面,所以很明顯這是mod_rewrite錯了,而不是Drupal。

要調試重寫的內容,請打開rewrite log,並在請求出現問題的頁面時打開它,或在index.php或page.tpl的頂部輸入print_r($ _ GET)。 PHP來查看實際要求的內容。

如果您願意在此發佈可能敏感的.htaccess文件,請這樣做,我們可以爲您查看是否存在任何錯誤配置。

+0

好吧,我做了print_r($ _ GET)。這是我看到的:Array([q] => error/HTTP_NOT_FOUND.html.var) 警告:無法修改標頭信息 - 已經發送的標頭(輸出從X開始:\ Dropboxen \ Home \ My Dropbox \ Sites \ drupal \ index.php:4)在X:\ Dropboxen \ Home \ My Dropbox \ Sites \ drupal \ includes 1369行包含\ bootstrap.inc – picardo 2010-06-23 16:53:34