简单Apache.htaccess重写规则

简单Apache.htaccess重写规则,apache,mod-rewrite,Apache,Mod Rewrite,我基本上希望每个请求 http://localhost/~lucamatteis/datadict/AccessionMainName 打电话 http://localhost/~lucamatteis/datadict/index.php/AccessionMainName 这是我当前的.htaccess实际位于~lucamatteis/datadict/ RewriteEngine on RewriteBase /~lucamatteis/datadict/ RewriteCond %{

我基本上希望每个请求

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更改为物理目录:

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

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


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

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

/home/lucamatteis/public_html/datadict/index.php/AccessionMainName
这仅在index.php是目录且AccessionMainName是文件时才有效

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

index.php?AccessionMainName

。。。您从
$\u GET['AccessionMainName']

中读取它,但它仍然不工作。我认为RewriteBase是相对于apache根目录的,这就是为什么大多数情况下它都被设置为
/
。但无论如何,这不起作用。调试重写的一个好方法是打开RewriteLog/RewriteLogLevel:启用重写日志,以便查看发生了什么。此外,您还需要解释“这不起作用”的含义。发生了什么事?如果什么都没有发生,那么请这样说,因为有无限的事情,“这不起作用”可能意味着。我想我从来没有必要设置它。