【问题标题】:.htaccess File, path is redirected properly but images and css are not loaded.htaccess 文件,路径已正确重定向,但未加载图像和 css
【发布时间】:2012-09-11 16:39:39
【问题描述】:

您好,我在 .htaccess 文件中使用以下几行

Options +FollowSymLinks
RewriteEngine on
RewriteBase /coaster/CoasterInsider/
 RewriteRule signup$ index.php?page=signup [L,NC]
 RewriteRule login$ index.php?page=loginHandle [L,NC]
 RewriteRule u/(.*)$ index.php?page=profile&username=$1 [L,NC]

路径已正确重定向,但未加载 css、flash 和图像。另外,如果我在任何网址之后使用以下“/”,

RewriteRule signup(/?)$ index.php?page=signup [L,NC]

在那里找不到任何页面,即错误 404。我只想让我的 htaccess 文件同时适用于 /signup 和 /signup/

【问题讨论】:

  • 使用 URL 重写时,您应该为图像/css/javascript/等使用绝对路径。你能发布页面的示例 URL 和 CSS/图像等的路径吗?
  • 我正在使用 之类的路径,是不是错了?因为那行不通
  • 是的,使用完整的网址,即localhost/mysite/images/img.jpg
  • 你有一个实际的文件夹/site/images/吗?
  • 是的,我有实际的文件夹,我在 www 文件夹下名为 Coaster/CoasterInsider/ 的子目录中进行本地测试,图像位于 www/coaster/CoasterInsider/images 下

标签: php apache .htaccess url-rewriting seo


【解决方案1】:

浏览器显示时:

http://example.com/coaster/CoasterInsider/signup
http://example.com/coaster/CoasterInsider/signup/

并遇到一个相对 URL,例如:

<img src="site/images/photo.png">

它将相对 URL 转换为(分别):

http://example.com/coaster/CoasterInsider/site/images/photo.png
http://example.com/coaster/CoasterInsider/signup/site/images/photo.png

您应该对资产使用绝对 URL。养成这种习惯:

<img src="/site/images/photo.png">

或者,您可以在页面中使用 HTML base 标签,它告诉浏览器如何处理相对 URL。个人不推荐。

【讨论】:

  • 有什么方法可以使用htaccess重定向图片请求,或者我们可以将example.com/coaster/CoasterInsider/signup的请求重定向到example.com/coaster/CoasterInsider/images/image.png
  • 每个页面(或一组页面)是否有单独的图像目录?
  • 不,我对所有页面都有一个目录。
  • 对于许多图像,您可以在&lt;head&gt;部分内的页面中添加基本标签;这可能会产生副作用,因此请留意 404 错误。我仍然建议进行残酷的查找/替换以将相对 URL 更改为绝对 URL。
  • 如果这样的事情可行.. RewriteRule signup/(.*)(\.css)$ site/css/$1.css
【解决方案2】:

这被建议并且对我有用,将它放在html 中的&lt;head&gt; 标签内:&lt;base href="/"&gt; 再次,它对我有用,我希望它可以帮助其他人。

【讨论】:

    【解决方案3】:

    使用

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    

    排除真实文件和目录被重写。

    你也可以添加

    RewriteCond %{REQUEST_FILENAME} !-l
    

    对符号链接做同样的事情。

    【讨论】:

    • 我已经添加了所有三行,就在 RewriteBase 下方,但仍然没有加载,如果它必须对子目录做些什么?
    猜你喜欢
    • 2018-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-05
    • 2015-08-07
    • 1970-01-01
    • 2011-09-17
    • 1970-01-01
    相关资源
    最近更新 更多