简单的Apache的.htaccess重写规则

问题描述:

我基本上希望每个请求简单的Apache的.htaccess重写规则

http://localhost/~lucamatteis/datadict/AccessionMainName 

实际调用

http://localhost/~lucamatteis/datadict/index.php/AccessionMainName 

这是我目前的.htaccess物理位置下~lucamatteis/datadict/

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

但不幸的是这并未没有工作。我已经试过的一切。在这一点上,我认为问题在于它使用了代字号,或者我不确定。

phpinfo()下载入模块部分mod_rewrite被加载。我不知道还有什么可以看的,因为我可能需要为mod_rewrite加载额外的东西才能工作。

任何想法?

你ReWriteBase你的物理目录
+0

调试重写的一个好方法是打开RewriteLog/RewriteLogLevel:http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewritelog – webbiedave 2010-12-22 16:08:43

+0

启用重写日志记录,以便看到发生了什么。你也需要解释“这不起作用”的含义。会发生什么?如果一切似乎都没有发生,那么请说出来,因为有无限的东西“这不起作用”可能意味着什么。 – Gerry 2010-12-22 16:09:14

首先确保您能够覆盖Apache配置槽.htaccess文件(AllowOwerride配置指令)。

然后尝试完全删除RewriteBase指令。在这种情况下,当前目录将被用作基地。

变化:

/home/lucamatteis/public_html/datadict (or something similar) 
所有的

http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html#RewriteBase

+0

仍然无法正常工作。我认为RewriteBase是相对于你的apache根目录的,这就是为什么你会发现它大部分时间被设置为`/`的原因。但无论如何,不​​工作。 – 2010-12-22 16:08:28

我认为问题是,你想要做一个内部重定向到一个不存在的文件:

/home/lucamatteis/public_html/datadict/index.php/AccessionMainName 

这如果index.php文件是一个目录,AccessionMainName是一个文件才有效。

我不认为这样的事情可以做到。大部分的时间,使用查询字符串参数是所有你需要:

index.php?AccessionMainName 

...你从$_GET['AccessionMainName']阅读。