我的.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文件..
是否有任何规则可以让我解决这个问题?谢谢你的帮助!
答案 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]