Reputation: 5799
We've built a web application for a client, which should be shown when some specific urls are called. All other urls should be handled by the existing Typo3 installation. Unfortunately, we do not have access to the Apache2 configuration, so I cannot access the rewrite log or change the VirtualHost definition.
The .htaccess looks approximately like this:
RewriteEngine On
# http://example.com/sub/foo/
RewriteCond %{REQUEST_URI} ^/sub/foo/.*
RewriteRule .* special.php [L]
# http://example.com/sub/bar/year/2014/
RewriteCond %{REQUEST_URI} ^/sub/bar/.*
RewriteRule .* special.php [L]
# Everything else should be typo3
RewriteRule .* general.php [L]
However, all calls are routed to the general.php
file. According to this page, the .htaccess should work as expected. Server is an Apache 2.2.
Any ideas?
Upvotes: 1
Views: 66
Reputation: 784898
You need to exclude special.php
from last rule. Also rule 1 and rule 2 can be combined into one like this:
RewriteEngine On
# http://example.com/sub/foo/
RewriteRule ^sub/(foo|bar)/ special.php [L,NC]
# Everything other than /special.php should be typo3
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule !^special\.php$ general.php [L,NC]
Update (Lars): Solution was the understanding of how the [L]
-flag works. It re-runs the whole loop, so every reoccuring rule has to be written in a way, that it negates the already rewritten parts. Also, from the view of the .htaccess
-file in the /sub/
-directory, where I put all the rules, the first directory has to be omitted like so:
RewriteEngine On
# http://example.com/sub/foo/
RewriteRule ^(foo|bar)/ special.php [L,NC]
# Everything other than /special.php should be typo3
RewriteRule !^special\.php$ general.php [L,NC]
Upvotes: 1