简单的Apache .htaccess RewriteRule

时间:2010-12-22 15:49:35

标签: apache mod-rewrite

我基本上都希望每个请求

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加载额外的东西才能工作。

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

将ReWriteBase更改为您的物理目录:

/home/lucamatteis/public_html/datadict  (or something similar)

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

答案 2 :(得分:0)

我认为问题在于您要对不存在的文件进行内部重定向:

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

仅当index.php是目录且AccessionMainName是文件时才会起作用。

我不认为这样的事情可以做到。大多数情况下,您只需使用查询字符串参数:

index.php?AccessionMainName

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