簡體   English   中英

Mod重寫/清理URL問題

[英]Mod rewrite / clean urls problem

我已經使用drupal 4.7安裝很多年了,最近出現了一個問題。 也就是說,重寫的網址現已顯示這些符號:Q =每Drupal的生成的URL如下: http://sitename.com/?q=path/alias ,哪里會前: HTTP://站點名。 com / path / alias

關於為什么會發生這種情況,我最好的猜測是,我最近開始使用一些PHP代碼在幾個sideblock中添加特定於上下文的鏈接樣式。 這是代碼:

<?php   $alias= $_GET['q']; ?>

<a <?php $pos=strpos($alias,"1234"); // node number
if(!$pos == false) {
echo 'style="color:black"'; 
} ?> href="internal/link/alias">Internal Link</a>

或更近期:

<?php $path = isset($_GET['q']) ? $_GET['q'] : '<front>';
$alias = url($path, array('absolute' => TRUE)); ?> 

<a <?php $pos=strpos($alias,"internal/link/alias"); 
if(!$pos == false) {
echo 'style="color:black"';
} ?> href="internal/link/alias">Internal Link</a>

這可能是問題嗎? 如果是這樣,關於修復的任何想法嗎?

我認為您的干凈網址已損壞。 如果您沒有打開干凈的URL,則所有URL都將看起來像http://example.com/?q=/foo/bar/baz 重寫規則將來自http://example.com/foo/bar/baz請求轉換為 http://example.com/?q=/foo/bar/baz進行內部處理。

您需要返回並確保您的重寫規則仍然有效(甚至可以轉到http://example.com/foo/bar/bazz嗎?),並確保Drupal啟用了干凈的URL。

進入管理員/設置,並確保“清理URL”已打開。

我不認為您的代碼段是造成這種情況的原因。 它僅從數據庫中讀取; 它不會更改URL。 仍然啟用mod_rewrite嗎? 這可能是由於服務器配置的最新更改引起的。 檢查phpinfo()的輸出。

順便說一下, url() $absolute選項在Drupal 4.7中作為單獨的參數傳遞 ,而不是在$options數組中傳遞 您的電話應該是:

url($path, $absolute=TRUE);

請嘗試以下操作:

  1. 再次將未修改的.htaccess文件上傳到網站的根目錄

  2. 確保您的apache具有mod_rewrite可用。 如果您具有外殼程序訪問權限,並且是Ubuntu / Debian計算機,則只需執行

    a2enmod重寫

  3. 檢查是否在管理員/設置上啟用了該選項

  4. 在根文件夾上創建一個簡單的.php文件,然后鍵入:

    的phpinfo();

然后,看看模塊是否正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM