我正在我的本地服务器中在根文件夹中开发网站,问题是当我的客户端告诉我将网站上传到他们的服务器时,它位于子文件夹中。所以网址就是这样的。 http://example.com/myproject
这种格式的问题是我的所有css,js,ajax调用都搞砸了,因为当我试图检查Firebug / chrome控制台时,我看到http://example.com/assets/css/main.css
,其实它应该是{{} 1}}
我的所有脚本编码都是这样的:
http://example.com/myproject/assets/css/main.css
因为当项目不在子文件夹中时,它可以正常工作。
现在我的问题是,是否有一个技巧,可能在.htaccess或mod_rewrite中允许我告诉浏览器总是在我的所有脚本调用中添加/ myproject?
原因是我不想更改所有脚本调用并添加<link rel="stylesheet" href="/assets/css/main.css">
这是我.htaccess的样本:
/myproject/...
非常感谢您的帮助!谢谢!
答案 0 :(得分:1)
如果您不能/不愿意编辑您的站点,则需要编辑站点文档根目录中的.htaccess文件(或服务器配置)。要将对不存在的文件的所有请求重写到项目的子目录:
例如:
w was found in line 1
hello
w was found in line 2
hello world
w was found in line 6
hello
w was found 3 times
对于不在RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/myproject%{REQUEST_URI} -f
RewriteRule !^myproject/ /myproject/$0 [L]
子目录中但不存在但在/myproject
子目录中存在的文件的所有请求,则在内部将请求重写到/myproject
子目录。< / p>
这假设您的(子)站点由文件系统上存在的真实文件组成。
这将使您的项目看起来好像是在文档根目录中托管的。您可以从外部重定向(/myproject
) - 但这会导致每个页面触发多个重定向,这是要避免的!
但是,这是否有效取决于您的客户在其网站上托管的其他内容。
我认为最好的解决方案是编辑文件。
更新:由于您的网站有前端控制器(即您通过R=301
路由所有不存在文件的请求),因此上述指令不太适用。
但是,如果客户端只是托管一个由文件系统上的真实文件组成的站点,那么这可能会简化为:
index.php
答案 1 :(得分:0)
在基于Unix的文件系统(Web路径所基于的)中,路径开头的/是根级别的绝对路径。
对于网址,这意味着它会直接转到您网站的文档根目录。
您需要删除href属性的开头/
<link rel="stylesheet" href="assets/css/main.css">