# Regulärer Ausdruck für "nichts"



## TVE (15. Februar 2005)

Hi zusammen

Da es kein Apache-Unterforum hat poste ich das hier. Ich kenn mich mit Regulären Ausdrücken noch nicht so toll aus, dennoch hab ich schon einiges an Doku durchgeackert, auch die mod_rewrite Doku auf der apache.org Seite.

Dennoch bring ich das nicht so ganz zum laufen was ich will.

Folgendes Problem: Wenn der user per http://www.irgendwas.org/index.php connected, soll er nicht index.php anzeigen, sondern index.php?in=sta.
Jetzt weiss ich, dass ich einfach die Standardfileauswahl im httpd.conf so abändern kann damit das geht, ich wollte es aber mal mit dem mod_rewrite Modul versuchen.

Mein Vorschlag:

```
RewriteRule ^/index\.php[^.+]$ /index.php?in=sta
```

Der Teil von 
	
	
	



```
[^.+]
```
 bereitet mir Probleme. Ich will explizit nur eine Rule, wenn die Eingabe exakt index.php ist und sonst nicht. Meiner Meinung nach müsste 
	
	
	



```
[^.+]
```
 der Ausdruck für NICHTS sein, es funktioniert so aber nicht. Kann mir da jemand den richtigen regulären Ausdruck für NICHTS formulieren?

MfG
TVE

EDIT: Ah ja, der angegebene Server existiert nicht, der soll nur zur Veranschaulichung des Problems dienen. (nicht dass noch jemand den Link ausprobiert)


----------



## BobDerMeister (15. Februar 2005)

schon mal
RewriteRule ^/index\.php$ /index.php?in=sta
probiert?

ansonsten in index.php einfach

```
if (!isset($_GET['in'])) {
    $_GET['in'] = 'sta';
}
```


----------



## TVE (15. Februar 2005)

Ja, genau das war mein erster Versuch, aber dann wandelt er jede index.php?in=irgendwas in index.php?in=sta um und ich will nur die Adresse umwandeln, welche nichts hintendran stehen hat.

Das andere ist mir schon klar, danke, aber ich will die regulären Ausdrücke etwas üben.


----------



## Kyrius (15. Februar 2005)

TVE hat gesagt.:
			
		

> Ja, genau das war mein erster Versuch, aber dann wandelt er jede index.php?in=irgendwas in index.php?in=sta um und ich will nur die Adresse umwandeln, welche nichts hintendran stehen hat.



dann hast du irgendwas falsch gemacht. Bobs Code sieht eine Änderung nur vor, wenn die Variable nicht existiert. Das ist nur der Fall wenn in der URL index.php steht.

index.php?in=käsetoast <- hier wird $in gesetzt, der Inhalt ist dabei schei... egal


----------



## TVE (15. Februar 2005)

Mit "Das hab ich schon versucht" hab ich die RewriteRule gemeint und nicht den Code. Es geht mir hier NUR um die Regular Expression nicht um Code.


----------



## Sven Mintel (16. Februar 2005)

etwaige URL-Anhängsel interessieren den Apache bei einer RewriteRule nicht .
deswegen würde folgendes:

```
RewriteRule ^/index\.php$ /index.php?in=sta
```
nicht hinhauen, obwohl es vom Ausdruck her zutrifft.


Du kannst den Query-String in einer Rewrite-Condition untersuchen:

```
RewriteEngine On
RewriteCond %{QUERY_STRING}  ^$
RewriteRule ^index.php$ /index.php?in=sta [R]
```
wenn diese Bedingung erfüllt ist(also der QUERY_STRING leer ist)... nur dann wird die Rule in Aktion treten.



> Da es kein Apache-Unterforum hat poste ich das hier.


Es hat aber ein Webserver-Unterforum, genau das passende für einen Apache-*Webserver* 

*moved*


----------



## TVE (16. Februar 2005)

Danke, das hat geholfen. Die Condition muss ich mir noch etwas genauer anschauen, da werd ich noch nicht so ganz schlau draus. Ich kann mir aber in etwa vorstellen wies funktioniert.

Ich hab WIRKLICH geschaut, obs ein Webserver Forum hat... da hatte ich wohl Tomaten auf den Augen! 

Ich danke für die Hilfe und für das *moved* 

Grüsse
TVE


----------

