我想用这种格式的字符串写我的网址: http://www.mysite.com/news/2012/10/04/article-title 但是当我在htaccess文件中使用RewriteRule时,网站样式无法正常工作。我有这个问题:在php中执行此操作的最佳方法是什么? 以前我在asp.net whit重写模块中这样做,但现在我不能这样做,我已经搜索了很多次并阅读了很多文章,但仍然有这个问题.... 非常感谢
答案 0 :(得分:3)
使用单一入口点:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?route=$1 [L]
这样,所有请求都将被路由到索引页面,其中包含所需地址的GET变量。现在,您可以决定如何在PHP内部路由(包含),控制更容易。
此外,您应该使用绝对路径指向您的样式,或者使用PHP变量来包含样式的绝对路径。
上述.htaccess
确保如果文件存在,则不会重写URL。 (第2-3行)。
答案 1 :(得分:2)
就个人而言,我在使用样式表和脚本时使用绝对URL(或者至少相对于根):
<link rel="stylesheet" href="/css/styles.css" />
如果这对您不起作用,那么您可能也在重写CSS路径。根据需要排除文件(可能最好通过检查它是否以某些扩展名结束)
答案 2 :(得分:0)
如果您的规则设置正确但之后您的CSS格式消失了,则表示您的CSS文件的相对路径现在不正确。
你现在可能正在使用这样的东西:
<link rel="stylesheet" href="css/styles.css" />
将其更改为:
<link rel="stylesheet" href="/css/styles.css" />
答案 3 :(得分:0)
我使用的解决方案是基本的html标记,可以对图像和样式表进行排序。
请务必至少使用:RewriteCond %{REQUEST_FILENAME} !-f
- 也许可以使其更加安全,因此直接路径仍可正常使用。