htaccess / mod_rewrite problems with possible subdirectories
I am working on a very dynamic system where i have two identical htaccess files in / and in /somepath. The reason for this that the domain could be pointed into /somepath, but i never know if it is.
When it is pointed to /somepath there are no problems, but when its not it seems like when i req开发者_运维问答uest /somepath/page/foo/bar the htaccess file in /somepath overrides the one in /. In the latter case i dont want the /somepath/.htaccess to run at all, or at least disregard the mod_rewrite in it.
One solution would be if i could check if the latter htaccess is not located in the document root. Is this possible? How can i compare the htaccess path to document root from within the htacces file?
Both htaccess files look like this:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} \.php$
RewriteRule .* uri_handler.php [L]
</IfModule>
Does anyone know whats going on here? Thanks!
I don't think this is possible. But this sounds like a construction error either way. It would be much better to incorporate the two .htaccess files into one. (Or is the second one in /somepath
even necessary? Why?)
Under which circumstances does the request's domain point to /somepath
? Is it a different domain you could use in a RewriteCond of its own?
Barring any attempts at simplifying your setup, I think that the easiest approach here is to just make sure that the .htaccess
file in /somepath
doesn't handle requests to /somepath
when the document root is /
.
Assuming we're all on the same page about the document root, we can accomplish this by modifying /somepath/.htaccess
:
Edit: The easier way is to just have it always request the uri_handler.php
that lives at the root:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} \.php$
RewriteRule .* /uri_handler.php [L]
</IfModule>
精彩评论