tags:

views:

67

answers:

1

I'd like to use mod_rewrite to make pretty URLs, but have a single version of the .htaccess file that can be used for any user on a server.

So far I have the standard pretty URL .htaccess:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$     /index.php/$1 [L]

Ideally, I would like something similar to

RewriteRule ^(.*)$     %{URL of this file's directory}/index.php/$1 [L]

This documentation would lead me to believe that what I want is not necessary:

Note: Pattern matching in per-directory context Never forget that Pattern is applied to a complete URL in per-server configuration files. However, in per-directory configuration files, the per-directory prefix (which always is the same for a specific directory) is automatically removed for the pattern matching and automatically added after the substitution has been done. This feature is essential for many sorts of rewriting - without this, you would always have to match the parent directory which is not always possible.

I still get the wrong result, though, whether or not I put a leading / in front of the index.php on the RewriteRule.

This,

http://server/test/stream/stream

turns into

http://server/index.php/stream

not

http://server/test/index.php/stream

when the .htaccess file is in /test/.

A: 

Turns out that it does matter whether I put a leading / in front of index.php or not. By leaving it off, the script works correctly. I had been testing with the R flag which was using physical directories on the redirect.

Allan