문제
나는 수년 동안 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이 켜져 있는지 확인하십시오.
다음을 시도하십시오.
UNICNIFED .HTACCESS 파일을 다시 사이트의 루트에 업로드하십시오.
Apache에 mod_rewrite가 있는지 확인하십시오. 쉘 액세스 권한이 있고 우분투/데비안 머신이라면
a2enmod 재 작성
관리자/설정에서 옵션이 활성화되어 있는지 확인하십시오.
루트 폴더에서 간단한 .php 파일을 만들고 다음을 입력하십시오.
phpinfo ();
그런 다음 모듈이 작동하는지 확인하십시오.