目前我正在開發一個PHP的網上商店。爲此,我使用Zend Framework 2.無法讓我的Zend Framework 2項目在託管服務器上工作
我的所有路由都存在一個語言環境,即「nl_NL」或「en_EN」,隨後是控制器和操作www.mydomain.com/nl_NL/profile/login。在這裏尋找我的項目中使用的路線示例。這個屬於Profile Module:http://pastebin.com/jmim47w8。
如果訪問者不具有帳戶,並且沒有設置cookie,語言環境變量將首先被設置爲從下列功能中檢索到的變量:
locale_accept_from_http($_SERVER['HTTP_ACCEPT_LANGUAGE'])
如果Cookie設置將使用該值。 另一方面,如果用戶確實擁有一個賬戶並且已經登錄,則將從用戶的配置文件中檢索所使用的變量。
我的整個腳本在本地主機上工作。但是,在服務器上它沒有。 當加載頁面沒有顯示。我檢查了錯誤日誌並找不到任何東西。但是,當我手動/ nl_NL /或任何其他語言環境符合「區域設置路線」正則表達式的要求在網址中,它確實工作。
我的第一個想法是,url_rewrite apache模塊沒有安裝或激活,但由於其他網站也使用這個模塊,並且它們在同一個服務器上,這似乎不合邏輯。當然,我確實試圖通過運行一些腳本來檢查它是否被啓用,但無濟於事。由於我們的服務器設置爲不允許運行shell腳本,或者檢查是否使用phpinfo()啓用了apache模塊,所以很難確定。
我試圖驗證我的.htaccess文件是正確的,但我幾乎是在.htaccess的noob。這是我的.htaccess:
RewriteEngine On
# The following rule tells Apache that if the requested filename
# exists, simply serve it.
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
# The following rewrites all other queries to index.php. The
# condition ensures that if you are using Apache aliases to do
# mass virtual hosting, the base path will be prepended to
# allow proper resolution of the index.php file; it will work
# in non-aliased environments as well, providing a safe, one-size
# fits all solution.
RewriteCond %{REQUEST_URI}::$1 ^(/.+)(.+)::\2$
RewriteRule ^(.*) - [E=BASE:%1]
RewriteRule ^(.*)$ %{ENV:BASE}index.php [NC,L]
要看看我的IndexController看起來像這裏看看:http://pastebin.com/AEgm3Jmk。總之,我真的很想知道如何讓Zend FW 2項目在託管服務器上工作,同時仍然使用url重寫或其他任何可以使用locale變量的方式。
如果在這篇文章中缺少一些東西需要我進一步幫助,我很樂意發佈它。
你收到了什麼錯誤,你的路線是什麼樣的?這可能會更容易找到問題。 .htaccess似乎是ZF2的默認版本。 (我目前在託管服務器上的.htaccess中使用相同的設置,並且一切正常)。在php.ini文件中打開錯誤報告?這也可能有助於找到問題。 – alex