【问题标题】:Broken links when redirect to subfolder重定向到子文件夹时链接断开
【发布时间】:2015-09-23 10:55:43
【问题描述】:

我有一个具有以下结构的项目

-public_html
-- Mysite
--- Mysite files

以下网址是用户请求的示例

www.mydomain.com/mysite/category.php?id=15

我更改了 .htaccess 以使 URL 更友好,.htaccess 内容是

 <IfModule mod_rewrite.c>
     Options +FollowSymLinks
     RewriteEngine on
     RewriteBase /mysite/
     RewriteCond %{REQUEST_FILENAME} !-d
     RewriteRule ^category/([0-9]+) category.php?id=$1 [L,QSA] 
 </IfModule>

一切都很好,只是当用户像这样输入新的 URL 时

www.mydomain.com/mysite/category/15

网站加载完毕但是css和js文件url坏了,页面中的每一个url都是这样写的。

www.mydomain.com/mysite/category/****.php 

请注意,每个 url 都有不需要的标记,即 category

我该如何解决这个问题? 问候

【问题讨论】:

标签: php .htaccess mod-rewrite friendly-url


【解决方案1】:

这两个问题都是由于您使用了相对链接。

您可以在页面 HTML 的 &lt;head&gt; 部分添加此内容:

<base href="/mysite/" />

以便每个相对 URL 都从该基本 URL /mysite/ 解析,而不是从当前页面的 URL。


更新:修改规则:

选项 +FollowSymLinks 重写引擎开启 RewriteBase /mysite/

 RewriteRule ^.+?/(index_files/.+)$ $1 [L,NC,R=301]

 RewriteCond %{THE_REQUEST} /mysite/[^/]+/([^./]+\.php) [NC]
 RewriteRule ^ %1 [L,R=301]

 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule ^category/([0-9]+) category.php?id=$1 [L,QSA] 

【讨论】:

  • 问题是,我没有权限访问源文件来更新它。
  • 只是修改服务器端规则但无法修改HTML时很难提供帮助。
  • 我可以访问源文件,添加 后一切正常
猜你喜欢
  • 2017-07-10
  • 2011-01-04
  • 2019-05-15
  • 2019-03-23
  • 2021-09-08
  • 2016-09-09
  • 2016-05-20
相关资源
最近更新 更多