.htaccess URL重写打破相对路径

时间:2015-07-09 02:04:09

标签: php apache .htaccess mod-rewrite url-rewriting

我试图在我的.htaccess文件中使用简单的重写从我的网站网址中删除.html扩展名:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html-f
RewriteRule ^(.*)$ $1.html

然而,这成功地重写了URL,但打破了我在页面上访问资源的所有相对路径。这意味着我的所有图像,CSS文件,脚本等都被破坏,我的页面加载不正确。

例如,如果我尝试使用相对路径:../ scripts / script.js访问资源,则.htaccess重写将尝试访问它,网址为www.example.com/page/scripts/script的.js。

我之前有这个URL重写与相对路径一起工作所以我知道它是可能的。我愚蠢地打破了我的.htaccess文件并没有备份,所以我不知道我是怎么做到的,并且经过几个小时的各种不同的尝试后无法复制它。有没有人知道如何在保留相对路径的同时删除.html扩展名?

提前感谢您提供任何帮助!

2 个答案:

答案 0 :(得分:0)

我不是htaccess文件的专家,但是你可以试试这里:

RewriteEngine On

#remove html extension
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^([^\.]+)$ $1.html

 #remove php extension
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME}\.php -f
  RewriteRule ^([^\.]+)/$ $1.php 

Article: Removing Extentions from URL with .htaccess

答案 1 :(得分:0)

尝试在html的标题中设置基本网址

<base href="//yourdomain/" />

如果您正在使用localhost

<base href="//localhost/yourdomain/" />