.htaccess规则无法正常工作

时间:2016-02-10 22:59:01

标签: php .htaccess

我的.htaccess文件有一条规则来制作像

这样的链接

localhost/post.php?id=some-post

被重写为

localhost/post/some-post

代码是:

Options +FollowSymLinks
RewriteEngine On
RewriteBase /

RewriteRule ^post.php/([a-z0-9-]+)$ post.php?id=$1 [L]

效果很好。但是,现在.php文件中的所有嵌入链接都会转到 localhost / post / first。

示例:如果我去帖子,我的style.css不会加载。该帖子正在http://localhost/post/css/style.css中搜索该文件,而不是http://localhost/css/style.css

/ img /文件夹中的图像,/ font /文件夹中的字体等也会出现同样的情况。它现在可以查找额外的帖子/文件夹中的所有内容,甚至是/ admin文件夹中的额外php文件..

是否有任何规则可以让我解决这个问题?谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

是的,你可以轻松解决这个问题。这里有2个选项。

您可以在html的<head>部分添加基本标记。

<base href="/" />

或者您可以在href

中使用/添加css路径
<link rel="stylesheet" type="text/css" href="/path/to/style.css">

为了更好的衡量,我还会更新我的规则以忽略真实文件和真实目录,这样如果你添加任何其他seo友好规则,它将不会做奇怪的事情。

RewriteEngine On
RewriteBase /

#if request is for a real file or directory do nothing.
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

#else all other rules go here for pretty URLs
RewriteRule ^post/([a-z0-9-]+)$ post.php?id=$1 [L]