我目前在本地Drupal 7環境中遇到問題。由於Drupal 7的網站配置可能會變得非常複雜,我會盡可能詳細地解釋我的問題。本地主機Apache2上的Drupal 7中的AJAX URL請求不包含基本URL或基本路徑
該網站坐落在我的本地環境中的一個子文件夾中,我有更多的項目在我的本地主機上運行,所以最好我想保持項目分離。另外,對於這個站點,我有兩個單獨的文件夾,一個用於開發,另一個用於共享相同數據庫的生產,所以通過添加虛假域的解決方案在這裏不起作用(我糾正我,如果我錯了)。
因此主要問題似乎是,AJAX請求中不包含基本URL或基本路徑,我不能http://localhost/mysite/devel/docroot/user
登錄因爲AJAX請求會去http://localhost/system/ajax
或http://localhost/ajax_register/login/ajax
,因此將不會返回正確的JSON響應。
這怎麼解決? Apache的httpd.conf
或.htaccess
中的配置是否足以使其工作?
這是我在settings.php
做,到目前爲止,第一:
$base_url = 'http://localhost/mysite/devel/docroot';
$base_path = '/mysite/devel/docroot/';
接下來,我試着重寫規則如下在httpd.conf
:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_REFERER} .*devel.*$ [OR]
RewriteRule ^/sites/(.*)$ /mysite/devel/docroot/sites/$1
RewriteRule ^/system/(.*)$ /mysite/devel/docroot/system/$1
RewriteRule ^/ajax_register/(.*)$ /mysite/devel/docroot/ajax_register/$1
</IfModule>
在這裏,我得到了下面的彈出與HTML(似乎從index.php
)在響應文本,而不是預期的JSON響應:
An AJAX HTTP error occurred.
HTTP Result Code: 404
Debugging information follows.
Path: http://localhost/ajax_register/login/ajax
StatusText: error
ResponseText: lots of HTML...
然後在不重寫規則,但使用代理服務器,而不是在httpd.conf
:
<IfModule mod_proxy.c>
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
RewriteEngine on
ProxyPass /system/ http://localhost/mysite/devel/docroot/system/
ProxyPassReverse /system/ http://localhost/mysite/devel/docroot/system/
<Location /system/>
Order allow,deny
Allow from all
</Location>
ProxyPass /ajax_register/ http://localhost/mysite/devel/docroot/ajax_register/
ProxyPassReverse /ajax_register/ http://localhost/mysite/devel/docroot/ajax_register/
<Location /ajax_register/>
Order allow,deny
Allow from all
</Location>
</IfModule>
對於代理的指令,被賦予了類似404未找到錯誤的POST AJAX請求,只是現在響應文本是JSON格式。
An AJAX HTTP error occurred.
HTTP Result Code: 404
Debugging information follows.
Path: http://localhost/ajax_register/login/ajax
StatusText: error
ResponseText: some JSON code...
沒有重寫規則和代理指示我碰到下面的錯誤在JavaScript都彈出:
An AJAX HTTP error occurred.
HTTP Result Code: 404
Debugging information follows.
Path: http://localhost/ajax_register/login/ajax
StatusText: error
ResponseText:
404 Not Found
Not Found
The requested URL /ajax_register/login/ajax was not found on this server.
終於在.htaccess
我試圖基地改寫爲以下內容:
RewriteBase /mysite/devel/docroot/
在這裏,我得到了同樣的404錯誤,當重寫規則和代理指令在httpd.conf
中被註釋掉時。我還想在數據庫中添加languages
表中的英文域名爲localhost
。
我不明白,爲什麼基地未包含在AJAX URL請求的前面?我該如何添加它?當我在Firebug中查詢Drupal.settings.basePath
時,我確實得到了我在settings.php
中設置的值:S - 有人有任何想法嗎?
解決,謝謝。學習如何正確配置服務器的基礎知識的開發人員的風險。 – 2013-05-12 19:24:19