我正在一个网站上使用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 /中,因为它是索引文件所在的位置。
答案 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/">