Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
Kommentar vom Moderator masterG am 11.12.2010 um 12:44:49 Uhr
Verschoben von PHP
GELÖST

Bedingte catch-all in .htaccess

Frage Entwicklung Webentwicklung

Mitglied: ChrisFah

ChrisFah (Level 1) - Jetzt verbinden

01.12.2010, aktualisiert 11.12.2010, 4079 Aufrufe, 5 Kommentare

suche eine Lösung für rewrite rules mit einer bedingten catch all möglichkeit

Hallo,

bin wieder mal em Ende meiner Weisheiten

Ich habe folgende .htaccess:
01.
RewriteEngine on  
02.
 
03.
RewriteRule ^(.*)suchergebnis/seite/([0-9]+)/(.*)$ /searchresult.php?showpage=$2&$3 [qsappend,L] 
04.
RewriteRule ^(.*)suchergebnis(.*)$ /searchresult.php?$2 [qsappend,L] 
05.
RewriteRule ^suche(.*)$ /search.php?$1 [qsappend,L] 
06.
RewriteRule ^detailsuche(.*)$ /search_detailed.php?$1 [qsappend,L] 
07.
... und einige mehr ... 
08.
RewriteRule ^(.*) catchall.php?$1 [qsappend,L]
Dazu kommen einige .php scripte, die ohne rewrite angesprochen werden.
Ohne die letzte (.*) catchall.php Zeile klappt alles perfekt. Mit dieser Zeile habe ich einer Server Error.

Was suche ich?
Es soll wie in der .htaccess rewriterules angegeben, diese Adressen umgeleitet werden, die .php dateien direkt ausgeführt werden, und alles was dann noch übrig bleibt, soll mit dieser rewriterule abgefangen werden - sozusagen eine selbstdefinierte Error404, wobei ich bewusst keine error404 funktion verwenden will.

Vielen Dank im voraus,
Lg, Chris
Mitglied: godlie
01.12.2010 um 08:43 Uhr
Hallo, was du suchst ist eine RewriteCond
Bitte warten ..
Mitglied: ChrisFah
01.12.2010 um 20:05 Uhr
Naja, da steh ich vor dem Problem, daß ich nicht weiss, wie ich die Bedingungen formulieren soll.
Letztendlich sollen alle Ausdrücke für diese catchall rule zutreffend sein, daher muss ich (.*) verwenden. Da werden jedoch die bereits zuvor umgeschriebenen auch erneut zwangsbeglückt.

Ich steh vor einem grossen ?.

Lg, Chris
Bitte warten ..
Mitglied: ChrisFah
01.12.2010 um 21:15 Uhr
Zur Erinnerung: Es sollen zuerst alle Urls lt RewriteRule umgeschrieben werden, was dann noch übrig bleibt und kein php file ist, wird mit der catch-all Bedingung bedient.

Habe es nun so gelöst:

01.
RewriteEngine on 
02.
 
03.
RewriteRule ^(.*)suchergebnis/seite/([0-9]+)/(.*)$ /searchresult.php?showpage=$2&$3 [qsappend,L] 
04.
RewriteRule ^(.*)suchergebnis(.*)$ /searchresult.php?$2 [qsappend,L] 
05.
RewriteRule ^suche(.*)$ /search.php?$1 [qsappend,L] 
06.
RewriteRule ^detailsuche(.*)$ /search_detailed.php?$1 [qsappend,L] 
07.
 
08.
# Catch all ausser .php files 
09.
RewriteCond %{REQUEST_URI} !(\.)  
10.
RewriteCond %{REQUEST_URI} !^/$  
11.
RewriteRule ^(.*)$  /test.php?os=$1 [L]
Seltsamerweise darf ich in der ersten RewriteCond NICHT
%{REQUEST_URI} !(\.php)
schreiben, da sonst die stylesheet.css nicht mehr verfügbar scheint. Weiss wer warum das so ist?

Lg, Chris
Bitte warten ..
Mitglied: dog
01.12.2010 um 21:49 Uhr
01.
#	Nächste Regel trifft nur zu, wenn die URL keine Datei ist oder nicht existiert 
02.
RewriteCond %{REQUEST_FILENAME} !-f 
03.
#	Nächste Regel trifft nur zu, wenn die URL kein Ordner oder nicht existiert 
04.
RewriteCond %{REQUEST_FILENAME} !-d
Bitte warten ..
Mitglied: ChrisFah
02.12.2010 um 10:03 Uhr
So klappt es auch prime.
Danke !
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
DNS
gelöst DNS - Catch All - einzelne Anfragen ablehnen (5)

Frage von heiko73 zum Thema DNS ...

E-Mail
E-Mail catch-all-Konto und mehrere Empfänger (6)

Frage von O-Marc zum Thema E-Mail ...

Groupware
Linux all in one Mailserver (19)

Frage von Lakatusch zum Thema Groupware ...

Webentwicklung
Redirect - Ausnahme definieren in Htaccess (3)

Frage von dodo-r zum Thema Webentwicklung ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...