.htacces仅显示没有CSS或PHP的html

.htacces仅显示没有CSS或PHP的html,php,html,css,.htaccess,Php,Html,Css,.htaccess,我一直在互联网上思考如何使用htacces(很难学)。当我潜伏在互联网上时,我发现: 我插入了我的url(在本地主机上工作):empresa.com/index.php?p=sub\u artigo&id=1&cat=Mercearia 它给了我这个(默认所有选项):http://empresa.com/sub_artigo/5/Mercearia.html .htacces代码是这样的:RewriteRule^([^/]*)/([^/]*)/([^/]*)\.html$/index.php?p

我一直在互联网上思考如何使用htacces(很难学)。当我潜伏在互联网上时,我发现:

我插入了我的url(在本地主机上工作):
empresa.com/index.php?p=sub\u artigo&id=1&cat=Mercearia

它给了我这个(默认所有选项):
http://empresa.com/sub_artigo/5/Mercearia.html

.htacces代码是这样的:
RewriteRule^([^/]*)/([^/]*)/([^/]*)\.html$/index.php?p=$1&id=$2&cat=$3[L]

当我用php生成url时,我会这样做

<a href=\"sub_artigo/".$response2['ID_sub_artigo']."/".$response2['url'].".html\">$response2[nome_sub_artigo]</a>

然后,当我点击按钮时,它看起来就像,只有html。 例如:

知道发生了什么吗?

试试下面的代码:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]*)/([^/]*)/([^/]*)\.html$ /empresa.com/index.php?p=$1&id=$2&cat=$3 [L]
请尝试以下代码:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]*)/([^/]*)/([^/]*)\.html$ /empresa.com/index.php?p=$1&id=$2&cat=$3 [L]

看起来您正在为您的资产(图像、javascript、css)使用相对链接

这意味着,当您从新url中查找
css/my_stylesheet.css
时,浏览器将请求类似
http://empresa.com/sub_artigo/5/css/my_stylesheet.css


最简单的解决方案是始终为您的资产使用绝对URL,如
/css/my_stylesheet.css
等。

看起来您正在为您的资产使用相对链接(图像、javascript、css)

这意味着,当您从新url中查找
css/my_stylesheet.css
时,浏览器将请求类似
http://empresa.com/sub_artigo/5/css/my_stylesheet.css


最简单的解决方案是始终为您的资产使用绝对URL,如
/css/my_stylesheet.css
,等等。

您的PHP代码输出到样式表的相对路径

例如:

<link rel="stylesheet" type="text/css" href="styles.css">
这是因为浏览器不知道URL已被重写-它认为它正在查看一个不存在的子目录中的文件

相反,您应该使用绝对路径,例如:

<link rel="stylesheet" type="text/css" href="/styles.css">

通过这种方式,您仍然可以将HTML与协议和域/端口分离(这样您就不会被
http://empresa.com
)但无论用于访问引用页面的URL是什么,路径都将始终相同。

您的PHP代码将输出到样式表的相对路径

例如:

<link rel="stylesheet" type="text/css" href="styles.css">
这是因为浏览器不知道URL已被重写-它认为它正在查看一个不存在的子目录中的文件

相反,您应该使用绝对路径,例如:

<link rel="stylesheet" type="text/css" href="/styles.css">

通过这种方式,您仍然可以将HTML与协议和域/端口分离(这样您就不会被
http://empresa.com
)但无论用于访问引用页面的URL是什么,路径都将始终相同。

仍然相同,不会更改。这极不可能是css文件的问题(和其他资产)将不会有
.html
扩展名。是的,这是你的答案。此外,我经常遇到同样的问题。仍然一样,不会改变。这极不可能是css文件(和其他资产)的问题不会有
.html
扩展名。是的,你的答案是正确的。此外,我经常有同样的问题。只是一件小事。当我单击不同的链接时,它们为什么会累积在url中?@Sashka当前页面的url被用作基本url,一旦你使用相对链接,它就会被添加到该url。如果你使用绝对url,只有域是预先指定的,只需将鼠标悬停在页面上的任何链接上,然后在浏览器的状态栏中检查完整的url。只是一件小事。当我单击不同的链接时,它们为什么会累积在url中?@Sashka当前页面的url被用作基本url,一旦您使用相对链接,它就会预先指定为如果你使用的是绝对url,则只有域是前置的,只需将鼠标悬停在页面上的任何链接上,然后在浏览器的状态栏中检查完整的url即可。