2009-03-01 3 views
3

Joomla 1.5.9는 IIS 5.2의 vista 64 dev에있는 PHP 5.2.8, mySQL 5.1.31과 함께 실행됩니다. 나는 SEO Settings "Search Engine Friendly URLs"과 "Use Apache mod_rewrite"가 올바르게 작동한다.IIS7에서 Joomla 검색 엔진 친화적 인 URL 문제

저는 (www.mochahosting.com을 사용하여) 호스팅 사이트도 구축 중입니다. 그들은 같은 소프트웨어의 약간 오래된 버전 인 Joomla 1.5.5, php 5.2.6, mySQL 5.0.4x를 사용합니다. 또한 IIS7을 사용하지만, 윈도우 32에서 실행

내가 호스팅 사이트에 를 작동하도록 SEO 설정 중 하나를 얻을 수

(나는 거의 함께, 내 로컬 컴퓨터에서 작업 할 수있는 SEO 설정을 입수했습니다 동일한 구성). 이제는 "검색 엔진 친화적 인 URL"로 시작하여 일을 단순하게 유지하십시오.

또한 아직 도메인 이름이 없으므로 호스트 파일 별칭을 사용하여 사이트에 연결합니다. 나는 누군가가 그 문제를 해결하기 위해 내 질문에 답할 것을 기대하지 않는다. 그래서 나는 그 문제를 설명 할 것이고 나는 사람들이 무슨 일이 일어나고 있는지를 이해할 수있는 충분한 일을하기를 희망한다. 이 질문의 목적으로 http://nodomainyet.com/joomla156_mx을 기본 URL (즉, joomla 홈페이지)로 사용하겠습니다. 예, 이것은 Joomla가 하위 디렉토리에 설치되어 있다는 것을 의미합니다. 이것이 문제가되는지 아닌지 확실하지 않습니다 (내 dev에 문제가 아닙니다).

에 관한 문제입니다.

"검색 엔진 친화적 인 URL"을 켜면 http://nodomainyet.com/joomla156_mx에 404 ("구성 요소를 찾을 수 없음")가 생성됩니다. 404 오류 페이지에는 http://nodomainyet.com/joomla156_mx/index.php으로 연결되는 링크가 있으며 해당 링크가 작동합니다. '검색 엔진 친화적 URL'을 끄면 http://nodomainyet.com/joomla156_mxhttp://nodomainyet.com/joomla156_mx/index.php이 모두 작동합니다. 그래서 내가 (다양한 메인 메뉴 링크로 이동 http://nodomainyet.com/joomla156_mx/index.php과 거기에서 이동하는 경우 "엔진 친화적 인 URL을 검색"을 켜면, 지금의 작동이 중지 http://nodomainyet.com/joomla156_mx/index.php-http://nodomainyet.com/joomla156_mx의 "자동 리디렉션"...

원인이 보인다 나는 새로운 Joomla 인스턴스로 설치되는 기본 joomla 사이트 만 사용하고 있습니다.) 그러면 모든 것이 잘 작동합니다. 그냥 작동하지 않는 http://nodomainyet.com/joomla156_mx로 갈 것입니다. 기본 메뉴에있는 "집"링크가 기본적으로 http://nodomainyet.com/joomla156_mx으로 이동한다는 점은 주목할 가치가 있습니다. "사용 - 두 번째 SEO 설정을 켜면 내가 내 dev에 상자의 그것과 호스트은 phpinfo의 출력을 비교 한이 문제를 야기 차이를 볼 수 없었다

...

Apache mod_rewrite "는 문제를 해결하지 못합니다 (URL의 index.php를 제거하는 것이기 때문에 생각할 수도 있습니다).

"검색 엔진 친숙한 URL"은 보통 web.config를 필요로하지 않으며 규칙을 다시 작성하지 않아도됩니다. 무엇이 잘못 될지 모릅니다.


업데이트 - 2009-03-03 나는 단지 ("사용 아파치 mod_rewrite는에서 처음 SEO 설정 ("검색 엔진 친화적 인 URL을 ")에 설정하는 나쁜 생각이었다 어쩌면 생각

") (비록 로컬 컴퓨터에서만"검색 엔진 친화적 인 URL "을 켜기 만해도 괜찮습니다). 그래서 몇 가지 실험을 시도해 보았습니다.

URL을 다시 쓰는 것이 호스트의 IIS7에서 제대로 설정되지 않았다고 생각했습니다. 나는 http://learn.iis.net/page.aspx/461/creating-rewrite-rules-for-the-url-rewrite-module에 설명 된 (첫 번째) 테스트 파일을 작성 했으므로 URL 재 작성이 작동한다는 것을 의미합니다.

그런 다음 IIS7의 Joomla에서 볼 수있는 다시 쓰기 규칙이 서브 디렉토리를 고려하여 다시 작성해야한다고 생각했습니다. 위에서 말했듯이 SEO 설정은 로컬 컴퓨터에서 제대로 작동합니다. Joomla는 하위 디렉토리에도 설치되어 있으며 모든 것이 잘 작동합니다. 그럼에도 불구하고, 나는

<rewrite> 
    <rules> 
     <rule name="Imported Rule 1" enabled="true"> 
      <match url="(.*)" ignoreCase="false" /> 
      <conditions logicalGrouping="MatchAll"> 
       <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" pattern="" ignoreCase="false" /> 
       <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" pattern="" ignoreCase="false" /> 
       <add input="{SCRIPT_NAME}" negate="true" pattern="^/joomla156mx/index.php" ignoreCase="false" /> 
       <add input="{SCRIPT_NAME}" pattern="(/|\.php|\.html|\.htm|\.feed|\.pdf|\.raw|/[^.]*)$" /> 
      </conditions> 
      <action type="Rewrite" url="joomla156mx/index.php" /> 
     </rule> 
    </rules> 
</rewrite> 

<rewrite> 
    <rules> 
     <rule name="Imported Rule 1" enabled="true"> 
      <match url="(.*)" ignoreCase="false" /> 
      <conditions logicalGrouping="MatchAll"> 
       <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" pattern="" ignoreCase="false" /> 
       <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" pattern="" ignoreCase="false" /> 
       <add input="{SCRIPT_NAME}" negate="true" pattern="^/index.php" ignoreCase="false" /> 
       <add input="{SCRIPT_NAME}" pattern="(/|\.php|\.html|\.htm|\.feed|\.pdf|\.raw|/[^.]*)$" /> 
      </conditions> 
      <action type="Rewrite" url="index.php" /> 
     </rule> 
    </rules> 
</rewrite> 

에서 재 작성 규칙을 수정하려고 (즉, 조건과 행동에 디렉토리 이름을 붙이는). 그것은 차이를 만들지 않았습니다. 이제 규칙을 다시 작성하기에 완전히 새로운 것이므로 뭔가를 망쳤을 수도 있습니다.

나는 리디렉션 규칙이 없다는 점을 의심 스럽다. 즉, &을 '다시 쓰는'URL을 붙여 넣으면 서버에 작성 URL이 있다는 것을 알려주지 않으며 실제 URL로 리디렉션되어야합니까? 그러나 다시,이 모든 것은 일반 오래된 재 작성 규칙을 가진 로컬 상자에서 제대로 작동하므로 잘못 된 트리에서 짖을 수 있습니다.

도움 주셔서 감사합니다.

답변

2

문제는 호스팅 업체에서 사용하지 않았다는 것입니다 FastCGI는 PHP를 실행합니다. phpinfo()를 실행할 때 "Server API = CGI/FastCGI"라고해도 fastcgi가 사용되는 것을 보증하는 것은 아닙니다.

CGI 또는 ISAPI 사용시 문제점은 무엇입니까? 그들 둘 다 PHP 변수 _SERVER [ "REQUEST_URI"], joomla SEO가 사용하는 문제가 있습니다.

FastCGI를 사용 여부되는 경우 확실히 파악하는 방법에 대한 내 다른 질문을 참조하십시오 : 나는 웹 사이트 www.carooolglobal.com이 How to know for sure if FastCGI is being used to run php scripts

2

이 페이지의 마지막 단계는 Enabling Search Engine Friendly URLs입니다. 기본 줌라으로

는 쿼리 문자열 그것을 귀하의 웹 사이트에 대해 생성하는 모든 링크 URL의 매개 변수를 사용합니다. 이 동작은 을 "Joomla에서"검색 엔진 친화적 인 "을 사용하도록 설정하여 변경할 수 있습니다. 그러나이 기능은 웹 서버 에서 사용할 수 있도록 기능을 다시 작성하는 URL을 사용합니다. IIS 6.0에는 URL 다시 쓰기 기능이 없으므로 ISAPI_Rewrite 또는 Ionics ISAPI 다시 쓰기 필터와 같은 타사 URL 재 작성 제품 중 하나를 사용할 수 있습니다. IIS 7.0은 URL 다시 쓰기 을 지원합니다.이 URL은 Microsoft URL 다시 쓰기 Module for IIS 7.0을 설치하여 활성화 할 수 있습니다. 다음 지침은 URL 재 작성 IIS 7.0 용 모듈을 사용하여 Joomla에서 URL 정리를 사용하는 방법을 설명합니다.
먼저 Microsoft URL Rewrite Module을 다운로드하여 설치해야합니다. 설치가 끝나면 C : \ inetpub \ wwwroot \ Joomla 폴더에있는 web.config 파일을 만들고 엽니 다. 다음 XML 코드를이 파일에 붙여 넣으십시오.

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <system.webServer> 
    <rewrite> 
     <rules> 
     <rule name="Security Rule" stopProcessing="true"> 
      <match url="^(.*)$" ignoreCase="false" /> 
      <conditions logicalGrouping="MatchAny"> 
      <add input="{QUERY_STRING}" pattern="mosConfig_[a-zA-Z_]{1,21}(=|\%3D)" ignoreCase="false" /> 
      <add input="{QUERY_STRING}" pattern="base64_encode.*\(.*\)" ignoreCase="false" /> 
      <add input="{QUERY_STRING}" pattern="(\&lt;|%3C).*script.*(\>|%3E)" /> 
      <add input="{QUERY_STRING}" pattern="GLOBALS(=|\[|\%[0-9A-Z]{0,2})" ignoreCase="false" /> 
      <add input="{QUERY_STRING}" pattern="_REQUEST(=|\[|\%[0-9A-Z]{0,2})" ignoreCase="false" /> 
      </conditions> 
      <action type="CustomResponse" url="index.php" statusCode="403" statusReason="Forbidden" statusDescription="Forbidden" /> 
     </rule> 
     <rule name="SEO Rule"> 
      <match url="(.*)" ignoreCase="false" /> 
      <conditions logicalGrouping="MatchAll"> 
      <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" pattern="" ignoreCase="false" /> 
      <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" pattern="" ignoreCase="false" /> 
      <add input="{URL}" negate="true" pattern="^/index.php" ignoreCase="false" /> 
      <add input="{URL}" pattern="(/|\.php|\.html|\.htm|\.feed|\.pdf|\.raw|/[^.]*)$" /> 
      </conditions> 
      <action type="Rewrite" url="index.php" /> 
     </rule> 
     </rules> 
    </rewrite> 
</system.webServer> 
</configuration> 

저장 web.config 파일 다음 열려있는 웹 브라우저와 http://localhost/joomla/administrator/에서 줌라 관리자 콘솔에 로그온
. 일단 사이트로 이동 로그인 -> 아래 글로벌 구성 메뉴 구성 SEO 설정 :

  • 검색 엔진 친화적 인 URL을 - 예
  • 사용 아파치 mod_rewrite를 - 예
  • 이 URL로 접미사를 추가 -에 의해 없음
  • 저장 구성 "적용"을 클릭 한 다음 http://localhost/joomla/으로 이동하십시오.이제 Joomla 페이지의 모든 링크에 검색어 문자열 매개 변수가없는 URL이 표시되며 해당 링크 중 하나를 클릭하면 서버에서 올바른 응답을 반환합니다.

    +0

    답변 해 주셔서 감사합니다. 그러나 필자는 이미 로컬 컴퓨터와 호스팅 된 사이트에서 비슷한 지침을 따랐습니다. 내 로컬 컴퓨터에서 작동하지만 호스팅 된 사이트에서는 작동하지 않습니다 ... 따라서 호스팅 사이트에서이를 진단하는 방법에 대한 자세한 정보가 필요합니다. – Jimmy

    0

    을, 모든 기능이 설정된 모든 SEO 설정으로 잘 작동 아니오

    내가 SEO 설정을 예로 설정하고 홈페이지의 검색 양식 왼쪽에서 검색을 수행하면 index.php에 결과가 올바르게 표시됩니다.하지만 이름 링크를 클릭하면 검색 결과, 팝업 창에서 사람의 프로필을 열어야하지만 팝업 창이 표시됩니다.

    이 사이트 잘못 입력 된 주소 이 페이지 에 액세스 할 수 없습니다에 대한 오래된 목록이있는 오래된 북마크/좋아하는 검색 엔진 : 때문에이 페이지를 방문 할 수 요청한 리소스를 찾을 수 없습니다. 요청을 처리하는 동안 오류가 발생했습니다. 다음 페이지 중 하나를 시도하십시오 :

    홈 페이지

    문제가 계속되면,이 사이트의 시스템 관리자에게 문의하시기 바랍니다.

    나는 우둔

    감사 Kislay이가 포함 된 경우 잘 모르겠어요

    0

    아직, 나는 보았다하지만 누락 된 일을 잘 해요입니다.

    당신이 당신의 검색 엔진 친화적 인 링크에 문제가있는 경우, 줌라가 설치된 폴더로 이동 한

    이 404 문제를 해결해야 .htaccess로 당신의 htaccess.txt라는 파일 이름을 바꿉니다.

    +0

    .htaccess는 IIS7에서 사용하지 않습니다. – rtpHarry