I've been banging my head against my keyboard with this one, and I'm sure it's something stupidly simple that I'm missing, but...
I'm using tinyMVC, which normally routes requests with /index.php/hello/foo or whatever. I'm trying to set up an .htaccess file so that I can do away with the /index.php/ and just request /hello/foo... the tinyMVC documentation suggests the following (files should be served from /web when accessing /):
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /web/index.php/$1 [L]
However, it only returns a broken link. If I use a query string instead of a directory (i.e. index.php?qs=$1), it serves the file (with query string attached) just fine, but开发者_如何转开发 that method doesn't work with tinyMVC routing.
Any suggestions?
EDIT: my file structure looks like this:
docroot/
/web/
/index.php
/.htaccess
Ideally, requests to mysite.com/hello would be transparently routed to mysite.com/web/index.php/hello, which the MVC controller would recognize.
My guess a missing '/' at the start of the target
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]
EDIT
Ok your comment did help the rewrite rule expects URL not directories so you shouldn't write the web part.
Check the error log
/var/log/httpd/error_log
while you get the broken page.
It may be due to lack of permission to .htaccess file.
The .htaccess file has to be in the document root folder.
DOCROOT/
/web/
/index.php
/.htaccess
Hope this helps.
精彩评论