我正在尝试使用模式重写来创建用户友好的URL.我的问题是,在给我的URL提供"名称"等类别后,当我使用新URL调用页面时,它无法加载CSS文件或图像.
我有一个像这样的链接:
本地主机/ mywebsite /项目?ID = 22
新链接就像
本地主机/ mywebsite /项目/ 22/myproject.project
htaccess代码:
RewriteRule ^project/([0-9]*)/.*\.project$ /project.php?project=$1 [L]
Run Code Online (Sandbox Code Playgroud)
(它可能不是100%正确,但我现在无法访问我的代码所以我只是写了这个,它在原始源上工作正常)
我的根目录是localhost/mywebsite/
我的CSS文件在css/style.css中
本地主机/ mywebsite/CSS/style.css中
我的htaccess
本地主机/ mywebsite/htaccess的
我的project.php文件在
本地主机/ mywebsite/project.php
所以在项目页面中我可以使用相对路径访问CSS文件,
<link href="css/style.css" rel="stylesheet" type="text/css" />
Run Code Online (Sandbox Code Playgroud)
但是当我使用重写的URL页面时找不到CSS文件.
我不能使用域名的绝对路径,因为我还没有域名!它可以是任何东西.
一种方法是使用类似问题localhost/mywebsite/project.php建议使用域的相对路径,当我运行我的脚本localy时,我的根目录是localhost所以css链接应该看起来像
HREF = "mywebsite/CSS/style.css中"
但是当我上线时,我应该将所有链接更改为类似的内容
HREF = "/ CSS/style.css中"
这似乎很多工作
我正在使用以下设置进行网址重写:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
Run Code Online (Sandbox Code Playgroud)
在index.php解析中,$_GET['url']以便在以下示例中:
ROOT/user/id/1/name/bobby // user is the page, id = 1, name = bobby
ROOT/blog/post/123/title/welcome // blog is the page, post = 123, title = welcome
Run Code Online (Sandbox Code Playgroud)
因此,第一个参数(?我不知道如何调用它)是页面名称,那么以下几个参数就像"键/值".现在,当我浏览ROOT/到插入页面html内部的样式表的链接时,页面显示正确.我正在浏览ROOT/index(它是相同的ROOT/)它正确显示页面(包含内容和其他东西),但未加载样式表的链接(即使在html结构中正确编写).我可以看到,当我加载它时,我的页面根本没有css.
我怎样才能解决这个问题?
编辑
css文件的路径如下:
project/view/css/common.css
Run Code Online (Sandbox Code Playgroud)
它包含的文件位于
project/public/index.php // the one with .htaccess and rewrite rules
Run Code Online (Sandbox Code Playgroud)
这让我想做一个链接(在index.php里面)
../view/css/common.css
Run Code Online (Sandbox Code Playgroud)
但这取决于网址的显示方式.举些例子:
# For URL = public/
project/view/css/common.css // good
# For URL = public/index/
project/public/view/css/common.css …Run Code Online (Sandbox Code Playgroud)