localhost上的htaccess是指root,而不是文件夹

时间:2014-09-30 10:01:54

标签: apache .htaccess mod-rewrite

我正在一个网站上使用htaccess使网址更加友好,但是,当我设置htaccess文件时,我遇到了问题。如果我使用我更喜欢设置的URL,我会被引用回本地主机而不是我正在使用的开发地图,所以在这种情况下,我会被引用回localhost/blog而不是{{1}所以我最终得到了localhost/jellyfish_rework/blog的视图,或者只是页面中的错误。

原始链接为localhost

http://localhost/jellyfish_rework/index.php?p=blog

这与Options +FollowSymLinks RewriteEngine On RewriteBase /jellyfish_rework/ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([^/]*)$ /?p=$1 [L]] 引用anchors的事实有关吗?导致我仍然以旧方式引用的其他<a href"/blog"></a>标记,我没有得到我想要的响应(因此链接保持anchor

修改

http://localhost/jellyfish_rework/index.php?p=blog文件位于localhost / jellyfish_rework /中,因为它是索引文件所在的位置。

1 个答案:

答案 0 :(得分:2)

您的最后一行(RewriteRule)应如下所示

RewriteRule ^([^/]*)$ index.php?p=$1 [L]

不要之前添加一个前导斜杠。
否则它将像绝对路径(来自root的/index.php)。

根据上述规则和RewriteBase,此规则将按此方式执行:
If not existing file/folder then rewrite it to /jellyfish_rework/index.php?p=URI

你的旧规则(带有前导斜线)是关于:
If not existing file/folder then rewrite it to /index.php?p=URI

注意:由于您使用了相对路径,因此您还必须使用前导/jellyfish_rework/更改所有html链接(css,javascript,图片,链接)或使用base代码

<base href="/jellyfish_rework/">