2010-01-17 40 views
2

我试图在.htaccess中打开一个mod重写实现REST风格的URL。有一点是我正在测试环境(新的cpanel帐户)中开发的。下面是的.htaccess:.htaccess用REST样式URL重写500错误

RewriteEngine on 

#REMOVE THIS LINE ON SITE LAUNCH! 
RewriteBase /~myNewAccount/ 

#Hide .php extensions for cleaner URLS 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php 

Options All -Indexes 

我可以用看起来像这样的网址:

www.example.com/~myNewAccount/index.php/id/50 

我可以在这里访问PATH_INFO,但是当我尝试这样做:

www.example.com/~myNewAccount/index/id/50 

...我得到一个500内部服务器错误。我已经尝试了Gumbo实施solution found here,但是这会让事情变得糟糕。

关于可能导致这种情况的想法?

回答

2

试试这个规则:

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

或者,如果你不想指数是在URL路径都:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule .* index.php/$0 [L] 
+0

问题是我得基本URL的地段(类似于index.php,但带有其他名称),我宁愿不在每个页面都有一个规则。这可能吗? – jay 2010-01-17 18:57:15

+0

@jeerose:如果您在替换中使用相对路径,那么它们将总是依赖于基本路径。 – Gumbo 2010-01-17 19:00:11