简单的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你的物理目录
首先确保您能够覆盖Apache配置槽.htaccess文件(AllowOwerride
配置指令)。
然后尝试完全删除RewriteBase
指令。在这种情况下,当前目录将被用作基地。
变化:
/home/lucamatteis/public_html/datadict (or something similar)
所有的
http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html#RewriteBase
仍然无法正常工作。我认为RewriteBase是相对于你的apache根目录的,这就是为什么你会发现它大部分时间被设置为`/`的原因。但无论如何,不工作。 – 2010-12-22 16:08:28
我认为问题是,你想要做一个内部重定向到一个不存在的文件:
/home/lucamatteis/public_html/datadict/index.php/AccessionMainName
这如果index.php文件是一个目录,AccessionMainName是一个文件才有效。
我不认为这样的事情可以做到。大部分的时间,使用查询字符串参数是所有你需要:
index.php?AccessionMainName
...你从$_GET['AccessionMainName']
阅读。
调试重写的一个好方法是打开RewriteLog/RewriteLogLevel:http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewritelog – webbiedave 2010-12-22 16:08:43
启用重写日志记录,以便看到发生了什么。你也需要解释“这不起作用”的含义。会发生什么?如果一切似乎都没有发生,那么请说出来,因为有无限的东西“这不起作用”可能意味着什么。 – Gerry 2010-12-22 16:09:14