重写断开链接

时间:2013-11-21 08:49:31

标签: .htaccess mod-rewrite url-rewriting

我为我的博客创建了一个URL重写,但所有链接,如css,href&由于这个原因,javascript被破坏了。

如果不通过在每个链接之前添加/来手动继续重命名所有链接,无论如何都会以某种方式在.htaccess文件中重写它吗?这就是我所拥有的:

RewriteRule ^blog/([-a-zA-Z0-9]+)/?$ blog.php?title=$1 [L,NC]

2 个答案:

答案 0 :(得分:1)

通过在您的网址中添加额外的/,浏览器不知道相对网址是什么,因此它会在每个相对网址前面附加/blog/您在网页内容中的链接。浏览器不知道它实际上是从/blog.php获取内容,该内容位于文档根目录中,而不是(至少在浏览器中)显示为“博客”的文件夹。

您可以在页面标题中添加基本URI,而不是更改所有链接:

<base href="/" />

请注意,在某些情况下(我认为使用旧的IE浏览器),您需要完整的网址:

<base href="http://your-site.com/" />

答案 1 :(得分:0)

使用mod_rewrite,您可以检查您的网址是否指向文件:

RewriteCond %{REQUEST_FILENAME} -f

或文件夹:

RewriteCond %{REQUEST_FILENAME} -d

以下是您可能使用的.htaccess

# if this url doesn't point on a file...
RewriteCond %{REQUEST_FILENAME} !-f
# ...and doesn't point on a folder...
RewriteCond %{REQUEST_FILENAME} !-d
# ...then check this rule
RewriteRule ^blog/([-a-zA-Z0-9]+)/?$ blog.php?title=$1 [L,NC]