1

我想用这种格式的字符串写我的网址: http : //www.mysite.com/news/2012/10/04/article-title 但是当我在 htaccess 文件中使用 RewriteRule 时,网站样式不能正常工作。我有这个问题:在 php 中执行此操作的最佳方法是什么?以前我在 asp.net whit rewrite 模块中这样做,但现在我不能这样做,我已经搜索了很多次并阅读了很多文章,但仍然有这个问题....非常感谢

4

4 回答 4

3

使用单一入口点:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?route=$1 [L]

这样,所有请求都将被路由到索引页面,其中包含所需地址的 GET 变量。现在,您可以决定如何在 PHP 内部进行路由(使用包含),这样更容易控制。

此外,您应该使用绝对路径来指向您的样式,或者使用 PHP 变量来包含样式的绝对路径。

以上.htaccess确保如果文件存在,它不会重写 URL。(第 2-3 行)。

于 2012-05-13T19:14:46.523 回答
2

就个人而言,我在放入样式表和脚本时使用绝对 URL(或至少相对于根):

<link rel="stylesheet" href="/css/styles.css" />

如果这对您不起作用,那么您可能也在重写您的 CSS 路径。根据需要排除文件(最好通过检查它是否以某些扩展名结尾来完成)

于 2012-05-13T19:14:16.043 回答
0

我使用的解决方案是基本的 html 标记,用于整理图像和样式表。

请务必使用:RewriteCond %{REQUEST_FILENAME} !-f至少 - 可能会使它更安全,因此直接路径仍然有效。

于 2012-05-13T19:15:59.280 回答
0

如果您的规则设置正确,但之后您的 CSS 格式消失了,这意味着您的 CSS 文件的相对路径现在不正确。

你现在可能正在使用这样的东西:

<link rel="stylesheet" href="css/styles.css" />

将其更改为:

<link rel="stylesheet" href="/css/styles.css" />
于 2012-05-13T19:15:14.413 回答