开发者

Rewrite rules doesn't work apache 1.3

开发者 https://www.devze.com 2022-12-29 00:40 出处:网络
I\'m using a couple of rewrite directives that always works before on apache2 but now trying a new shared hosting and the re开发者_如何学Cwrite rules do not seem to get applied.

I'm using a couple of rewrite directives that always works before on apache2 but now trying a new shared hosting and the re开发者_如何学Cwrite rules do not seem to get applied.

I've reduced the .htaccess files to the following essential rules:

RewriteEngine On
Rewritebase /demo/

RewriteRule ^(.*)$ index.php/$1 [L]

As you can see, i want to rewrite every request to my index.php file in the demo folder from root.

So everything like http://www.example.com/demo/albums/show/1 should be processed by http://www.example.com/demo/index.php for a standard MVC setup. (I'm using CodeIgniter btw)

The directives above results in a 500 error, so i thought maybe because of some possible syntax differences between 1.3 and 2.x.

After some trail and error editing, i've found the rewrite rule itself to be at fault but i really don't understand why.

  • Any ideas to why my rewrite rule doesn't work? it did before on lots of different servers.
  • Suggestions how to fix it?

Note: mod_rewrite does work, i've written a small test to be sure.


In your position, I'd probably look in the Apache error log first, then would try to eliminate one moving part by doing

RewriteEngine On
RewriteRule ^/demo/index.php$ /demo/index.php [L]
RewriteRule ^/demo/(.*)$ /demo/index.php/$1 [L]

If that worked, I'd try reintroducing RewriteBase.


Did you set:

Options +FollowSymLinks

… before the rewrite rules? If FollowSymLinks is disabled mod_rewrite won’t work.


It may be that you’re running into an infinite recursion since index.php/… is also matched by ^(.*)$. So try to exclude your target:

RewriteCond $1 !^index\.php/
RewriteRule ^(.*)$ index.php/$1 [L]
0

精彩评论

暂无评论...
验证码 换一张
取 消