문제

나는 수년 동안 Drupal 4.7 설치를 사용해 왔으며 최근에 문제가 발생했습니다. 즉, 재 작성 된 URL은 이제 다음과 같은 문자를 표시하고 있습니다.? Q = 모든 Drupal 생성 URL에서 다음과 같이. http://sitename.com/?q=path/alias , 이전에 : http://sitename.com/path/alias .

왜 이런 일이 일어날 지에 대한 나의 가장 좋은 추측은, 최근에 몇 가지 측면 블록 내에 컨텍스트 별 링크 스타일을 추가하기 위해 일부 PHP 코드를 사용하기 시작했다는 것입니다. 코드는 다음과 같습니다.

<?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을 변경하지 않습니다. mod_rewrite가 여전히 활성화되어 있습니까? 이는 최근 서버 구성 변경으로 인해 발생할 수 있습니다. 출력을 확인하십시오 phpinfo().

그건 그렇고, 옵션 $absolute ~을 위한 url() ~이다 별도의 주장으로 통과되었습니다 Drupal 4.7에서 $options 정렬. 귀하의 전화는 다음과 같습니다.

url($path, $absolute=TRUE);

다른 팁

깨끗한 URL이 방금 깨 졌다고 생각합니다. 깨끗한 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이 켜져 있는지 확인하십시오.

다음을 시도하십시오.

  1. UNICNIFED .HTACCESS 파일을 다시 사이트의 루트에 업로드하십시오.

  2. Apache에 mod_rewrite가 있는지 확인하십시오. 쉘 액세스 권한이 있고 우분투/데비안 머신이라면

    a2enmod 재 작성

  3. 관리자/설정에서 옵션이 활성화되어 있는지 확인하십시오.

  4. 루트 폴더에서 간단한 .php 파일을 만들고 다음을 입력하십시오.

    phpinfo ();

그런 다음 모듈이 작동하는지 확인하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top