---
title: "CoolURI geht nur auf erster Ebene?!"
url: "https://www.typo3.net/d/81883-cooluri-geht-nur-auf-erster-ebene"
source: "typo3.net"
tags: ["Extensions","Frage","URLs & Routing"]
created: "2008-09-17"
last_reply: "2010-04-27"
replies: 4
solved: false
page: 1
pages: 1
lang: "de"
---

# CoolURI geht nur auf erster Ebene?!

Extensions · 4 Antworten · gestartet 2008-09-17

## Eröffnungsbeitrag

**Eazy** · 2008-09-17 · [Beitrag #1](https://www.typo3.net/d/81883-cooluri-geht-nur-auf-erster-ebene/1)

Moin,

Der coole URI ist ja echt ein recht cooler (und vorallem simpler?) Zeitgenosse, kommt bei mir aber leider nicht klar:

Habe Tutorial von <http://blog.undkonsorten.com/cooluri-real-url-seiten-ausblenden-seo> durchgemacht. Habe dabei die Standard-XML-Konfigdatei von CoolURI verwendet, ohne die Einstellungen zu verändern. Auch habe ich die .htaccess von o.g. Tutorial verwendet, welche wie folgt lautet:

```php
RewriteEngine On
RewriteRule ^/(typo3|typo3temp|typo3conf|t3lib|tslib|fileadmin|uploads|showpic\.php)$ - [L]
RewriteRule ^/(typo3|typo3temp|typo3conf|t3lib|tslib|fileadmin|uploads|showpic\.php)/.*$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule .* index.php [L] 

RewriteBase /
```

Ich kann den Root-Pfad (<http://server/>), sowie die erste Ebene (also bspw. <http://server/about/>) öffnen, bzw. über Links dort hingelangen. Klicke ich aber ab der zweiten Ebene (also in /about/) auf einen Link, der auf bspw. /about/mich/) verweist, so kriege ich eine Typo3-Fehlermeldung namens "Error! Reason: "about/mich/" could not be found, closest page matching is about/".

Wat mach ich falsch? Mach ich wat falsch?

Habe zur Entwicklung übrigens XAMPP im Einsatz, wo ich allein im httpd.conf die Zeile "LoadModule rewrite_module modules/mod_rewrite.so" de-kommentiert habe (also die Raute raus, damit aktiviert wird) geändert habe.

Danke für eure Hilfe!

Eazy

## Antworten

### [#2](https://www.typo3.net/d/81883-cooluri-geht-nur-auf-erster-ebene/2) · marcfinnern · 2008-09-25

hi,
da ich den gleichen Fehler hatte wie du..
hier mal meine CoolUri XML

```php
<?xml version="1.0" encoding="utf-8"?>
<cooluri>
  <cooluris>1</cooluris>
  <cache>
    <usecache>1</usecache>
    <params2cool>
      <checkforchangeevery>0</checkforchangeevery>
    </params2cool>
    <cool2params>
      <translateifnotfound>0</translateifnotfound>
      <oldlinksvalidfor>365</oldlinksvalidfor>
    </cool2params>
    <cacheparams>0</cacheparams>
      <pagenotfound>
      <status>HTTP/1.0 301 Moved Permanently</status>
    <behavior type="redirect">page-not-found.html</behavior>        
    </pagenotfound>
  </cache>

    <pagepath>
    <table>pages</table>
    <id>uid</id>
    <title>subtitle,title</title>
    <connection>pid</connection>
    <additionalWhere><![CDATA[ AND is_siteroot<>1 ]]></additionalWhere>
    <start>
      <param>pid</param>
      <value>0</value>
    </start>
    <idconstraint>
      <match>^[0-9]+$</match>
    </idconstraint>
    
    <saveto>id</saveto>
    <default>0</default>
        
    <allparamconstraints> <!-- constraint -->
      <type>int</type>
      <compare>gt</compare>
      <value>0</value>
    </allparamconstraints>
    
    <userfunc>tx_cooluri->getPageTitle</userfunc>
    <urlize>1</urlize>

  </pagepath>
 
  <uriparts>
  <part>
     <parameter>param[key]</parameter>
     <lookindb>
       <to>SELECT title FROM table WHERE uid=$1</to>
       <urlize>1</urlize>
     </lookindb>
  </part> 
  
  
    <part>
      <parameter>tx_ttnews[tt_news]</parameter>
      <lookindb>
        <to>SELECT title FROM tt_news WHERE uid=$1</to>
        <!-- if you have news items in different languages in one folder, use this sql -->
        <!-- to>SELECT title FROM tt_news WHERE (uid=$1 or l18n_parent=$1) AND sys_language_uid={L=0}</to -->
        <translatetoif>
          <match>^[0-9]+$</match>
        </translatetoif>
	<urlize>1</urlize>
        <t3conv>1</t3conv>
      </lookindb>
    </part>
    <part>
      <parameter>tx_eeblog[showUid]</parameter>
      <lookindb>
        <to>SELECT subject FROM tx_eeblog_maintable WHERE uid=$1</to>
        <translatetoif>
          <match>^[0-9]+$</match>
        </translatetoif>
        <t3conv>1</t3conv>
      </lookindb>
    </part>
  </uriparts>
    
  <predefinedparts>
    <part>
      <parameter>tx_ttnews[backPid]</parameter>
    </part>
    <part>
      <parameter>cHash</parameter>
    </part>
    <part>
      <parameter>tx_eeblog[pointer]</parameter>
    </part>
    <part>
      <parameter>tx_eeblog[backPID]</parameter>
    </part>
    <part>
      <parameter>no_cache</parameter>
    </part>
  </predefinedparts>
  
  <valuemaps>
    <valuemap>
      <parameter>L</parameter>
      <value key="">0</value>
      <value key="en">1</value>
    </valuemap>
  </valuemaps>
  
  <paramorder>
    <param>L</param>
  </paramorder>
     <removetrailingslash>0</removetrailingslash>
</cooluri>
```

<removetrailingslash>0</removetrailingslash> // Sorgt das am ende kein / entfernt wird!! könnte nämlich wie bei mir sein, das dein server das nicht zu lässt...

well done

marc

### [#3](https://www.typo3.net/d/81883-cooluri-geht-nur-auf-erster-ebene/3) · InforMedic · 2009-10-23

bei mir macht nur Rewrite Base / ein Problem -> darf also nicht in die .htaccess

Ansonsten debugging:

- - mit phpinfo() prüfen ob auch wirklich php>5.1.x mit simpleXML installiert ist
  - prüfen ob die DB Tabelle "link_cache" gefüllt ist
  - wenn nicht im CoolUri Modul im BE mittels "delete and force update to all links" füllen
  - BE/FE/Browser Cache löschen
  - Seite aktualisieren
  - Links auf Seite überprüfen

Meine Funktionierende cooluri.xml ist ein Merge der standard xml datei sowie der xml Datei aus der CoolUri Doku (Google Doks) und sieht wie folgt aus:

```html
<?xml version="1.0" encoding="UTF-8"?>
<cooluri>
  <urlsuffix>.html</urlsuffix>
  <removetrailingslash>1</removetrailingslash>
  <cooluris>1</cooluris>
  
  <cache>
    <usecache>1</usecache>
    <params2cool>
      <checkforchangeevery>1</checkforchangeevery>
    </params2cool>
    <cool2params>
      <translateifnotfound>0</translateifnotfound>
      <oldlinksvalidfor>365</oldlinksvalidfor>
    </cool2params>
    <cacheparams>0</cacheparams>
    <pagenotfound>
      <status>HTTP/1.0 301 Moved Permanently</status>
      <behavior type="redirect">page-not-found.html</behavior>       
    </pagenotfound>
  </cache>

  <pagepath>
    <table>pages</table>
    <id>uid</id>
    <title>tx_realurl_pathsegment,title,subtitle,alias</title>
    <connection>pid</connection>
    <additionalWhere><![CDATA[ AND is_siteroot<>1 ]]></additionalWhere>
    <start>
      <param>pid</param>
      <value>0</value>
    </start>
    <idconstraint>
      <match>^[0-9]+$</match>
    </idconstraint>
    
    <saveto>id</saveto>
    <default>0</default>
       
    <allparamconstraints> <!-- constraint -->
      <type>int</type>
      <compare>gt</compare>
      <value>0</value>
    </allparamconstraints>
        
    <userfunc>tx_cooluri-&gt;getPageTitle</userfunc>
    <urlize>1</urlize>
    <t3conv>1</t3conv>
  </pagepath>
  
  <removeparts>
    <part>fileadmin</part>
    <part>typo3</part>
    <part>typo3conf</part>
    <part>typo3temp</part>
   </removeparts>

  <uriparts>
  <part>
     <parameter>param[key]</parameter>
     <lookindb>
       <to>SELECT title FROM table WHERE uid=</to>
       <urlize>1</urlize>
     </lookindb>
  </part>
  
    <part>
      <parameter>tx_ttnews[tt_news]</parameter>
      <lookindb>
        <to>SELECT title FROM tt_news WHERE uid=$1</to>
        <!-- if you have news items in different languages in one folder, use this sql -->
        <!-- to>SELECT title FROM tt_news WHERE (uid= or l18n_parent=) AND sys_language_uid={L=0}</to -->
        <translatetoif>
          <match>^[0-9]+$</match>
        </translatetoif>
        <urlize>1</urlize>
        <t3conv>1</t3conv>
      </lookindb>
    </part>
    <part>
      <parameter>tx_eeblog[showUid]</parameter>
      <lookindb>
        <to>SELECT subject FROM tx_eeblog_maintable WHERE uid=$1</to>
        <translatetoif>
          <match>^[0-9]+$</match>
        </translatetoif>
        <t3conv>1</t3conv>
      </lookindb>
    </part>
  </uriparts>
    
  <predefinedparts>
    <part>
      <parameter>tx_ttnews[backPid]</parameter>
    </part>
    <part>
      <parameter>cHash</parameter>
    </part>
    <part>
      <parameter>tx_eeblog[pointer]</parameter>
    </part>
    <part>
      <parameter>tx_eeblog[backPID]</parameter>
    </part>
    <part>
      <parameter>no_cache</parameter>
    </part>
  </predefinedparts>
  
  <valuemaps>
    <valuemap>
      <parameter>L</parameter>
      <value key="">0</value>
      <value key="de">1</value>
      <value key="es">2</value>
    </valuemap>
  </valuemaps>
  
  <paramorder>
    <param>L</param>
  </paramorder>
  
</cooluri>
```

gruß
Info

### [#4](https://www.typo3.net/d/81883-cooluri-geht-nur-auf-erster-ebene/4) · ores · 2009-10-30

ich hatte das selbe problem mit der ersten ebene in realurl.
Lösung war: RewriteBase/ Pfad anpassen!

### [#5](https://www.typo3.net/d/81883-cooluri-geht-nur-auf-erster-ebene/5) · Unbekannter Benutzer · 2010-04-27

Also ich hatte dieses Problem mit mehreren Menüebenen ebenfalls.

Meine Konfig sah vor, ohne endenden "/" und dafür mit Endung .html
Bei mir kam auch nicht die von mir in CoolURI konfigurierte 404-Seite bei einem Aufruf in einer unteren Ebene, sondern die 404-Seite des Providers. Also lags somit an der .htaccess. Hier dazu nun meine jetzt funktionierende Konfiguration:

**.htaccess (kann sein das einige die Zeile "RewriteBase /" rausnehmen müssen):**

*RewriteEngine On
RewriteBase /
RewriteRule ^/(typo3|typo3temp|typo3conf|t3lib|tslib|fileadmin|uploads|showpic\.php)$ - [L]
RewriteRule ^/(typo3|typo3temp|typo3conf|t3lib|tslib|fileadmin|uploads|showpic\.php)/.*$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule .* index.php*

**und meine CoolUriConf.xml:**

*<?xml version="1.0" encoding="utf-8"?>
<cooluri>

  <cache>
    <usecache>1</usecache><!-- READONLY -->
    <params2cool>
      <!-- how often (in days) should be links updated (Typo3 cache needs to be cleared) -->
      <checkforchangeevery>1</checkforchangeevery>
    </params2cool>
    <cool2params>
      <!-- how many days should old links (those that are redirected to existing) should be kept active -->
      <oldlinksvalidfor>365</oldlinksvalidfor>
    </cool2params>

    <pagenotfound>
      <!-- the status has to meet HTTP protocol header -->
      <status>HTTP/1.0 301 Moved Permanently</status>
      <behavior type="redirect"><![CDATA[404.html]]></behavior>
      <!-- possible @type values:
        page - will show a file (loaded using file_get_contents)
        redirect - will redirect to a certaing URL
        message - will output a message
      -->
    </pagenotfound>
<pagenotfound>
<status>HTTP/1.0 200 OK</status>
<behavior type="redirect"><![CDATA[/]]></behavior>
</pagenotfound>
  </cache>

  <pagepath>
    <!-- first non-empty value will be used -->
    <title>tx_realurl_pathsegment,alias,subtitle,title</title>

    <saveto>id</saveto><!-- READONLY -->
    <default>0</default><!-- READONLY -->

    <userfunc>tx_cooluri->getPageTitle</userfunc>
    <t3conv>1</t3conv>
  </pagepath>

  <uriparts>
    <part>
      <parameter>tx_ttnews[tt_news]</parameter>
      <lookindb>
        <to>SELECT title FROM tt_news WHERE uid=$1</to>
        <!-- if you have news items in different languages in one folder, use this sql -->
        <!-- to>SELECT title FROM tt_news WHERE (uid=$1 or l18n_parent=$1) AND sys_language_uid={L=0}</to -->
        <t3conv>1</t3conv>
      </lookindb>
    </part>
    <part>
      <parameter>tx_eeblog[showUid]</parameter>
      <lookindb>
        <to>SELECT subject FROM tx_eeblog_maintable WHERE uid=$1</to>
        <t3conv>1</t3conv>
      </lookindb>
    </part>
    <!-- you can move cHash to predefineparts to remove in from URL
         but first read the manual -->
    <part>
      <parameter>cHash</parameter>
    </part>

    <!-- common patterns -->

    <!-- this will just add this parameter value to URL -->
    <part>
      <parameter>paramA</parameter>
    </part>
    <!-- this will look up parameter value in the database table "sometable" and if found
          the value will be transformed using Typo3 csconv into URL-like value.
        You can make all sorts of MySQL stuff here, such as add UID into the result:
        SELECT CONCAT(title,'-',uid) FROM ...
    -->
    <part>
      <parameter>paramB</parameter>
      <lookindb>
        <to>SELECT title FROM sometable WHERE uid=$1</to>
        <t3conv>1</t3conv>
      </lookindb>
    </part>
  </uriparts>

  <predefinedparts>
    <part>
      <parameter>no_cache</parameter>
    </part>

    <!-- common patterns -->

    <!-- parts defined this way will be removed from URL -->
    <part>
      <parameter>paramC</parameter>
    </part>
    <!-- this will prefix a value with "prefix-". Cannot be localized.
    -->
    <part key="prefix-(.*)" regexp="1">
      <parameter>paramD</parameter>
    </part>
    <!-- if parameter matches value, key will be added to URL
         with mutliple values, use valuemaps
    -->
    <part key="thisWillAppearInUrl">
      <parameter>paramE</parameter>
      <value>ifParamEMatcesThisValue</value>
    </part>
  </predefinedparts>

  <valuemaps>
    <valuemap>
      <parameter>L</parameter>
      <!-- L is empty of 0, result is empty -->
      <value key="">0</value>
      <!-- L is 1, result is "en" -->
      <value key="en">1</value>
    </valuemap>
  </valuemaps>

  <!-- this will put L param to the first position
      for more magic see manual -->
  <paramorder>
    <param>L</param>
  </paramorder>

<!-- READONLY START -->
<cooluris>1</cooluris>

<urlsuffix>.html</urlsuffix>
<removetrailingslash>1</removetrailingslash>

</cooluri>*

Hoffe geholfen zu haben,
Huaba

PS: sorry, irgendwie klappte die richtige Formatierung nicht...

---

Quelle: „CoolURI geht nur auf erster Ebene?!“, typo3.net, https://www.typo3.net/d/81883-cooluri-geht-nur-auf-erster-ebene
Beiträge von Mitgliedern des Forums. Bitte mit Link auf die Diskussion zitieren.
