就在我以为我开始理解mod重写的时候,我发现了两个问题,尽管不同,但我怀疑它们有相同的原因。我会单独发布它们-这是第一个问题:
我有一个本地主机站点。所有文件(包括.htaccess)都在同一目录中。
我有这个规则:
RewriteRule ^mytest/([A-Za-z0-9-]+)/?$ companies.php?page=$1 [L]
我有一个菜单链接:
<a href="mytest/ibm" title="My test.... etc.
当我点击链接时,我连接到:
localhost/Mysite/mytest/ibm
其对应于包含关于IBM的信息的页面companies.php。到目前为止还不错。问题是,当我在"mytest"页面上,悬停在我看到的同一菜单链接上时:
localhost/Mysite/mytest/mytest/ibm
这当然会导致404错误。
问题是:这个额外的"神话"是从哪里来的?
我在所有意义上都修改了这个规则(或者至少在我看来我修改了),但没有成功。毫无疑问,我忽略了一些简单的事情——但到底是什么呢?
问题确实是由于相对链接的问题造成的
在更改为重写的URL时,我替换了旧的:
<li><strong><a href="companies.php?page=companies" title="Company histories organized by….
由新:
<li><strong><a href="company/list" title=" Company histories organized by….
到目前为止,这个网站运行得还不错,因为我已经花了两天的时间试图让我重写的URL发挥作用,所以必须由mod重写来负责。
我忽略了菜单文件在include文件夹中。
多亏了miah的建议,我后退了一步,将我的研究重新定位于相对链接,并发现添加了这条线:
<base href="http://localhost/Mysite/"></base>
在我的菜单顶部,php文件解决了我的问题。
生活就是这么简单。当它工作时…