我正在尝试对网站的.htaccess文件进行一些更改。我在网上搜索过,但我找不到明确的解决方案,否则我有可能弄错了。所以我们在这里:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^/$ /e/www/ [R]
RewriteRule ^news$ /news.php
RewriteRule ^news$ /news.php
RewriteRule ^resources$ /resources.php
RewriteRule ^lexicon$ /lexicon.php
RewriteRule ^contacts$ /contacts.php
RewriteRule ^analytics$ /analytics.php
RewriteRule ^([0-9]+)-([0-9]+)-([0-9]+)-(.*)$ /news.php?yy=$1&mm=$2&dd=$3&alias=$4
RewriteRule ^resources$ /contacts.php
RewriteRule ^articles_search$ /articles_search.php
RewriteRule ^articles_data_search$ /articles_data_search.php
RewriteRule ^profile/([0-9]+)&commit=(.*)$ /profile.php?id=$1&commit=$2
RewriteRule ^profile/(.*)&commit=(.*)$ /profile.php?alias=$1&commit=$2
最后2行,我试图得到一个结果:
www.example.com/profile.php?alias=kokazani&commit=Edit
到此:
www.example.com/profile/kokazani&commit=Edit
现在的问题是错误的css和js文件路径。我需要一个解决方案,或者更好的重写规则的方法。我认为一个解决方案可能是将css / blabla.css等所有内容重写为根目录/ css / blabla.css,但是如果有一个标准解决方案来解决这个问题,我想知道:)
提前致谢。
答案 0 :(得分:3)
有两种可能的(简单)解决方案:
/include/css/style.css
等)<base>
元素为要遵循的相对URL设置正确的基本URL(而不是Apache更改的文档目录)。答案 1 :(得分:1)
我的方法是(正如Truth所建议的)使用绝对路径。如果无法做到这一点,您可以使用:
RewriteRule ^(.+)/css/(.*)$ /css/$2
但要注意:这意味着客户端(浏览器)最终将获取并缓存同一文件的多个副本,因为它从不同的路径获取(尽可能看到)。因此,您将失去客户端样式表缓存的优势。